【问题标题】:How SocketIO works internally?SocketIO 如何在内部工作?
【发布时间】:2015-11-24 11:36:54
【问题描述】:

我对 SocketIO 的工作原理有疑问。

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

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

而且这个房间1里面已经注册了10000个会话……

这段代码迭代10000次是一样的吗?

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

  • 发射到房间,socketIO 在内部将消息发送到 在房间里注册的所有会话?或者 SocketIO 是如何工作的?

这个问题是因为我有一个房间,我只需要向这个房间的一部分发出消息,而且我有带有 userIds 的微型房间,并且创建另一个迭代 @987654323 的房间可能更复杂@ 并发送到我需要发出此消息的所有微型房间。

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

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

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

    这两个语句做同样的事情。因此,emit 将向房间广播消息。 Room (sessionId) 只有一个用户,Room (room1) 可以连接多个用户。

    内部调用socket.io-adpater的广播方法。

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

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

    【讨论】:

      猜你喜欢
      • 2019-01-13
      • 2010-10-14
      • 2013-09-28
      • 2012-08-01
      • 2011-12-10
      • 2018-02-10
      • 2014-09-29
      • 2011-03-18
      • 1970-01-01
      相关资源
      最近更新 更多