NodeJs Socket.io 房间

Posted

技术标签:

【中文标题】NodeJs Socket.io 房间【英文标题】:NodeJs Socket.io Rooms 【发布时间】:2019-05-13 19:00:57 【问题描述】:

这是一个非常简单的问题,但我想确保我正在正确扩展我们的 socket.io 实现。在 nodejs 后端经过漫长的处理后,我们正在使用 socket.io 响应客户端。所以基本上客户端进行调用,然后 socket.io 向客户端发出进程已经完成的信号。此外,socket.io 仅响应为请求建立的临时房间。

在 nodejs 中,我为以下内容创建了一个全局变量,以便我可以发送回客户端:

global.io = require('socket.io')(server);

但是要创建房间本身,我有点不确定如何在全局范围内创建它,以便只有连接并发出请求的套接字才能收到响应。

因此,如果我有 500 台通过 socket.io 发起连接的客户端计算机,那么每台计算机都会有自己的套接字。为了确保房间是唯一的,我在所有 500 个房间中都使用了一个 guid。当然,如果应该只为特定房间的一个套接字评估发射,我不希望所有套接字都接收流量......

有什么想法吗?

【问题讨论】:

【参考方案1】:

如果我正确理解了您的问题,您是否希望将信息发送到该 1 个套接字?

大概是这样的:

socket.broadcast.to(socketId).emit('someeventname', eventData);

如果您打开了与该客户端的连接,这意味着您通过 socket.id 获得了他们的套接字ID。您可以仅向该套接字发出事件。

【讨论】:

@user3597741 如果它有资格作为答案,我将不胜感激。

以上是关于NodeJs Socket.io 房间的主要内容,如果未能解决你的问题,请参考以下文章

NodeJs Socket.io Rooms

socket.io 创建动态房间

如何使用nodejs socket.io向特定房间中的用户发送打字警报和消息

Socket.io 房间没有收到消息

使用 socket.io 防止向多个房间发送消息

( Socket.io ) 一个socket连接多个房间