SocketIO如何在内部工作?

时间:2015-11-24 11:36:55

标签: node.js socket.io

我对 SocketIO 的工作方式有疑问。

如果我向“ room1 ”发出一个套接字:

socketio.sockets.to(room1).emit('chat.message',data);

这个房间1已经注册了10000次会议......

迭代此代码10000次是否相同?

 socketio.sockets.to(sessionId).emit('chat.message',data);
  • 效率可能最差?

  • 发送到房间,socketIO正在内部发送消息 在会议室登记的所有会议?或者SocketIO如何运作?

这个问题是因为我有一个房间,我只需要向这个房间的一部分发出信息,而且我还有带有userIds的微房间,也许更复杂的是创建另一个房间来迭代{{ 1}}并发送到我需要发出此消息的所有微房间。

1 个答案:

答案 0 :(得分:1)

每当任何客户端与服务器连接时,它将使用roomId(一些随机字符串)自动加入房间。当您明确加入另一个房间时,套接字将连接到带有roomId的房间(无论您指定的是什么)。

socketio.sockets.to(sessionId).emit('chat.message', data);
socketio.sockets.to(room1).emit('chat.message', data);

两个陈述都做同样的事情。所以发射将广播消息发送到房间。 Room(sessionId)只有一个用户,Room(room1)可以连接多个用户。

在内部,它正在调用socket.io-adpater的广播方法。

https://github.com/socketio/socket.io-adapter/blob/master/index.js 行:111

它正在迭代每个连接的客户端并发送数据。