node.js - 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});
});
因此,在任何一个信号之后,广播停止并且套接字发出而不是广播。
解决方案
推荐阅读
- ios - 创建 textField 允许书面用户输入或用户单击 iOS 中的预填充选项
- c# - 在类库“对象引用未设置为对象的实例”中使用 MEF 导入时收到空异常?
- javascript - NodeJS Forge - 将加密的字节字符串转换为十六进制字符数组
- powershell - Powershell:如何传递变量值,该值在执行的命令变量中赋值
- python - 如何转换日期以构建图表?np.linspace
- python - 如何在 Python 中找到 fit_transform() 后编码值对应的分类名称?
- javascript - 使用命名对象定义数组的打字稿
- android - 为所有平台创建一个模块
- google-apps-script - 由非所有者授权执行 GSheet 脚本
- amazon-web-services - 如何将 ECS 服务注册到另一个堆栈中定义的目标组