【发布时间】:2017-12-04 08:50:12
【问题描述】:
我们目前有一个聊天应用程序,当向适当的用户(可能是 1 个或多个,取决于对话中的用户数)发送消息时,我们会循环通过与服务器的所有套接字 (Socket.io 2.0.2) 连接( NodeJS)根据成员 ID 值获取用户拥有的套接字列表,因为每个用户都可以从多个设备连接。代码如下所示,以确定我们应该发送消息的用户拥有哪些套接字,
var sockets = Object.keys(socketList);
var results = [];
for (var key in sockets) {
if (hasOwnProperty(socketList[sockets[key]].handshake.query, 'token')) {
if (JSON.parse(socketList[sockets[key]].handshake.query.member).id === memberId) {
results.push(socketList[sockets[key]]);
}
}
}
必须循环通过套接字连接似乎效率低下,我想知道有没有更好的方法。我的想法是为每个用户创建一个房间,大多数用户将只有一个连接,但有些用户将通过多个设备连接,因此他们的房间中可以有多个插座。然后我只会广播到适当的房间,而不是总是循环通过所有套接字。鉴于 95% 的用户将只有一个套接字连接,我不确定这种方法是否更有效,并且希望对此有所帮助。 谢谢。
【问题讨论】:
标签: socket.io