2013-04-27 57 views
2

我使用的是快车的Node.js服务器和希望的组做到以下几点:Socket.IO:推给客户

  • 客户它(如localhost/show/:projectID
  • 调用的URL与ID
  • 每个客户端调用同一个ID应该进入
  • 新的消息应只推到在同一个“组”的客户,但没有客户端调用的URL与另一个ID
相同的“组”

这怎么可能在Socket.IO中完成? (我已经阅读了关于“房间”的内容,但我不知道如何将它们与URL一起使用)

+0

您可以尝试使用HTTP Referrer和命名空间,但您真正需要的是使用'.handshake'来授权访问该项目的唯一ID,使用框架和socket.io之间的会话,通常访问如果项目ID在会话变量中作为'isMemberIn'被授予,当然这可能会改变。 – Gntem 2013-04-27 21:33:23

回答

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"}); 
}); 

只要一个客户端连接,他所使用的网址将被保存到ref,他加入了一个名为URL(当然URL可以进一步加工后能有更好的房间名称房间,但这不是解决方案的必要条件)。