相关疑难解决方法(0)

最佳性能-通过回路或房间发射到插座

当前,我们有一个聊天应用程序,通过该应用程序,当向适当的用户发出消息时(可能是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]]);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

必须循环通过套接字连接似乎效率很低,我想知道还有没有更好的方法。我的想法是为每个用户创建一个房间,大多数用户只有一个连接,但是有些用户将通过多个设备连接,因此他们的房间中可以有多个插座。然后,我只是广播到适当的房间,而不是总是在所有插座上循环播放。鉴于95%的用户只能使用一个套接字连接,因此我不确定这种方法是否更有效,并且希望对此有所投入。谢谢。

socket.io

2
推荐指数
1
解决办法
1004
查看次数

标签 统计

socket.io ×1