实用或最佳socket.io实现

时间:2015-11-02 21:14:50

标签: node.js sockets websocket socket.io

我在实现套接字方面遇到了问题。案件: 用户在他的列表中有n个房间, 用户应该能够接收来自每个房间的通知。

方法1)为每个房间的用户打开一个套接字。在这个用户必须为每个房间打开多个套接字

方法2)用户打开一个房间名称= userid的单个套接字, 节点维护每个房间的列表('room_user')和该房间中的用户(这可以在连接时完成)。 例如

room_user:{ 
      room1 : {
             user1Id, user2Id
          }
      room2 : {
             user1Id, user3Id
          }
    }

对于发送消息,服务器从指定房间的列表中获取用户ID,然后循环向所有用户发送消息。在这种方法中,用户必须只打开一个套接字,但服务器必须在循环中发出相同的消息

我想知道哪种方法更适合

1 个答案:

答案 0 :(得分:1)

如果您考虑底层TCP / IP广播系统,您可能会发现用户拥有单个websocket连接和服务器循环并一次又一次地发送相同的消息(问题中的方法2)会更好。

请允许我解释一下:

TCP / IP不支持广播。出于这个原因,将相同的消息发送到多个连接实际上是通过循环连接列表并一次又一次地发送相同的消息来实现的......

确实,您的代码会将循环移动到更高级别的应用程序,但这可能比让许多连接阻碍您扩展应用程序的能力更好。