Метод трансляции Socket io рассылает отправителю также из второго действия - PullRequest
0 голосов
/ 19 июня 2020

У меня есть конфиденциальный код, поэтому я не могу размещать здесь сообщения. Я опишу подробности своей проблемы.

У меня есть приложение с полным стеком с PostgreSql, node, express и angular, и я использую Socket io для уведомлений в реальном времени о действиях, выполняемых cо пользователями приложения, которые принадлежат к одной команде.

Теперь я открываю два chrome windows с запущенным приложением. В одном окне я добавляю данные. Поскольку я транслирую это из бэкэнда, он отображается только в другом окне. Но после этого, если я сделаю другое действие, скажем, удалите какие-либо данные, это будет показано как в windows. То есть сокет io действует так, как будто он излучает, а не передает.

Как я могу это решить?

Один из способов - отправить электронное письмо пользователя также из серверной части и сопоставить его с отображением или нет. Но это было бы обходным путем. В моей среде разработки пользователь обоих windows будет тем же самым. Может ли это вызвать проблемы?

Позвольте мне добавить немного демонстрационного кода:

//In client
this.socket.emit('test1') //In test1 component
this.socket.emit('test2') //Test 2 component

//In server
io.on('connection', (socket) => {
  socket.on('test1', (data)=> {
    let message = data + " test1 ";
    socket.broadcast.emit('update', {message:message});
  });
  socket.on('test2', (data) => {
    let message = data + " test1 ";
    socket.broadcast.emit('update', {message:message});
  });

Итак, после любого сигнала трансляция прекращается, а сокет излучает вместо трансляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...