Socket.IO:推送到一组客户端

时间:2013-04-27 17:51:14

标签: node.js express client socket.io grouping

我正在使用带有Express的Node.js服务器并希望执行以下操作:

  • 客户调用其中包含ID的网址(例如localhost/show/:projectID
  • 每个调用相同ID的客户都应该进入同一个“组”
  • 新邮件只应推送到同一“组”中的客户端,而不能推送到使用其他ID调用URL的客户端

如何在Socket.IO中完成? (我已经读过“房间”,但我不知道如何将它们与URL一起使用)

1 个答案:

答案 0 :(得分:2)

在用.handshake进行一些实验后,我找到了类似于GeoPhoenix建议的解决方案。
我不知道我的解决方案有多好,但它确实有效。这是代码:

io.sockets.on('connection', function (socket) {
  var ref = JSON.stringify(socket.handshake.headers.referer);
  socket.join(ref);
  io.sockets.in(ref).emit('news', {hello: "world"});
});

一旦客户端连接他使用的URL将被保存到ref并且他加入以该URL命名的房间(当然URL可以进一步处理以具有更好的房间名称,但这不是解决方案工作所必需的。)