Вот реальный вариант использования, взятый из моей собственной борьбы.

Представьте, что вы создаете простой чат. Когда пользователь присоединяется, он подключается к серверу через веб-сокет (socket.io). Теперь представьте, что к вашему чату присоединяются два пользователя, Сара и Роберт.

Когда пользователь Sarah отправляет сообщение, ее браузер (клиент) создает событие чата и отправляет данные сообщения вместе с ним на сервер. Поскольку вы используете React, вы выбираете немедленное обновление DOM с отправленным сообщением, чтобы обеспечить потрясающий пользовательский опыт, зная, что шансы сбоя доставки сообщения довольно низки. В результате Сара видит, что отправленное ею сообщение мгновенно появляется в ее браузере.

Теперь Роберту нужно увидеть сообщение. Когда сервер получает событие «чат» вместе с сообщением, отправленным Сарой, вы действительно можете использовать только 1 из 2 вариантов, описанных выше.

Как вы можете себе представить, я использовал неправильный и узнал это на собственном горьком опыте. Чтобы помочь вам сэкономить время, вот ответ: вы должны транслировать сообщение только во все подключенные сокеты, кроме Сары. В противном случае Сара увидит повторение своего сообщения во второй раз в своем чат-клиенте. Ой!

Удачного строительства!

Первоначально опубликовано на сайте Nick Ang.