2013-04-27 67 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可以進一步加工後能有更好的房間名稱房間,但這不是解決方案的必要條件)。