Socket.IO:推送到客户端组
我正在使用Express的Node.js服务器,并希望执行以下操作:
- 客户端调用带有ID的URL(例如
localhost/show/:projectID
) - 每个客户端调用相同的ID应该进入相同的“组”
- 新的消息只应该推送到同一个“组”中的客户端,而不是使用另一个ID调用一个URL的客户端
这怎么可以在Socket.IO中完成? (我已经阅读了“房间”,但我不知道如何与URL一起使用它们)
在用.handshake
了一点点试验之后,我find了和.handshake
类似的解决scheme。
我不知道我的解决scheme有多好,但它的工作原理。 代码如下:
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
然后他join一个以该URL命名的房间(当然URL可以被进一步处理以获得更好的房间名称,但这对解决scheme来说不是必须的) 。