node.js - NodeJs Socket.io 房间
问题描述
这是一个非常简单的问题,但我想确保正确扩展我们的 socket.io 实现。在 nodejs 后端经过漫长的处理后,我们正在使用 socket.io 响应客户端。所以基本上客户端进行调用,然后 socket.io 向客户端发出进程已经完成的信号。此外,socket.io 仅响应为请求建立的临时房间。
在 nodejs 中,我为以下内容创建了一个全局变量,以便我可以发送回客户端:
global.io = require('socket.io')(server);
但是要创建房间本身,我有点不确定如何在全局范围内创建它,以便只有连接并发出请求的套接字才能收到响应。
因此,如果我有 500 台通过 socket.io 发起连接的客户端机器,那么每台机器都会有自己的套接字。为了确保房间是唯一的,我在所有 500 个房间中使用了一个 guid。当然,如果特定房间的一个套接字应该正在评估发射,我当然不希望所有套接字都接收流量....
有任何想法吗?
解决方案
如果我正确理解了您的问题,您是否希望将信息发送到该 1 个套接字?
也许是这样的:
socket.broadcast.to(socketId).emit('someeventname', eventData);
如果您打开了与该客户端的连接,则意味着您的套接字 id 通过 socket.id
. 您可以仅向该套接字发出事件。
推荐阅读
- django - 如何在 django 模板中获取上一页 url?
- django - NoReverseMatch at / 在服务器的开始
- reactjs - 使用“react-leaflet”新 useLeaflet() 钩子的示例?
- pyspark - 将 AWS 胶水输出格式化为 JSON OBJECT
- r - PCA,然后是 R 中的 k-means 聚类分析 - 理解聚类均值
- python - 我无法在 Powershell 中创建文件夹或文件。当我输入 cd foldername 时出现错误
- python - Windows 视频播放器无法播放来自 ffmpeg 的裁剪视频
- mysql - 截断 v/s 删除
- html - npm http-server 下载 index.html 而不是服务
- java - 如何从列表视图中获取选定的值