首页 > 解决方案 > Socket io 广播方法也从第二个动作向发送者广播

问题描述

我有一个机密代码,所以我不能在这里发帖。不过,我会详细说明我的问题。

我有一个包含 PostgreSql、node、express 和 angular 的完整堆栈应用程序,并且我正在使用 Socket io 来实时通知属于同一团队的应用程序的共同用户进行的活动。

现在我打开两个运行应用程序的 chrome 窗口。在一个窗口中,我添加了一些数据。当我从后端广播时,它仅显示在另一个窗口中。但在那之后,如果我做另一个动作说删除任何数据,它会显示在两个窗口中。那就是套接字 io 的行为就像是在发射,而不是在广播。

我该如何解决这个问题?

一种方法是也从后端发出用户电子邮件并将其与显示或不匹配。但这将是一种解决方法。在我的开发环境中,两个窗口的用户将是相同的。那会造成问题吗?

让我添加一些演示代码:

//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});
  });

因此,在任何一个信号之后,广播停止并且套接字发出而不是广播。

标签: node.jsangularsocket.io

解决方案


推荐阅读