仅将事件发送给具有Socket.io的房间组合中的客户端

时间:2014-03-30 21:47:52

标签: node.js socket.io

假设我有一套不同运动的房间(“足球”,“篮球”,“网球”......)和一组城市房间(“巴黎”,“伦敦”,“柏林”...... 。)在带有Socket.IO的Node.js应用程序中

是否有可能只向那些对足球感兴趣的伦敦发送和活动? 类似的东西:

io.sockets.in('london').in('football').emit('event_name', data);

或者设计不好?

提前致谢。

1 个答案:

答案 0 :(得分:1)

你可以通过多种方式解决这个问题

  • 您可以拥有房间,并希望收听发出的football事件

    io.sockets.in('london').emit('football',/* data */)

  • 如果您的应用使用/london/london/football

    等路由,则
  • 命名空间

    您可以执行此操作io.of('/london').in('football').emit('update',/* data */说明在/london会议室中football路由会发出update事件。它在我看来稍微快一点,因为它不会在一个房间中组合很多用户,而是使用命名空间来处理发射事件。

  • 每个城市和兴趣的房间。
    io.sockets.in('london:football')这是特定城市和运动的一个房间。
    这个房间里的每个人都可以获得有关足球运动的最新信息。