【问题标题】:Emitting to specific room of socket.io 1.X namespace发射到 socket.io 1.X 命名空间的特定房间
【发布时间】:2016-09-04 13:44:40
【问题描述】:
  • 我已经实现了许多 socket.io 命名空间,用户可以根据他们所在的页面连接到这些命名空间。

  • 将数据发送到特定的命名空间:房间组合似乎需要额外的样板文件。

  • 这就是我当前设置命名空间并向给定房间中的套接字发送事件的方式:


1) 设置命名空间

let newsNs = io.of('/news');
newsNs.on(CONNECTION, socket => {
    socket.join('political');
});

2) 向/news 命名空间和political 房间中的套接字发送事件:

newsNs.in('political').clients((err, clients) => {
    clients.forEach(c => newsNs.connected[c].emit(EVENT, 'data'));
})

是否有一种更简洁、更简洁的方式来向 namespace:room 组合中的所有套接字发出信号,而无需先遍历每个客户端,然后从 someNs.connected 派生套接字?

【问题讨论】:

    标签: javascript node.js websocket socket.io


    【解决方案1】:

    一个简单的newsNs.to('political').emit(payload) 就足够了。

    以http://socket.io/docs/rooms-and-namespaces/#joining-and-leaving 为例。

    【讨论】:

    • 哇,这确实有效。我昨晚尝试了这个,但是当它不起作用时,我开始寻找其他解决方案。看起来我加入房间后就离开了房间。我的连接处理程序在连接到新房间之前从所有其他房间删除了套接字,并且由于“room.leave”是异步的,我忘记检查新房间是否也没有被删除。
    • 啊,是的,必须喜欢比赛条件。很高兴你知道了!
    猜你喜欢
    • 2018-05-07
    • 2012-06-11
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    相关资源
    最近更新 更多