2013-07-07 18 views
0

我正在使用nodejs + socket.io並進行聊天。每個用戶在進入聊天時都會獲得一些數據給他的socket。例如:如何更改其他用戶的套接字屬性?

module.exports = function(io) { 
    var chat = io.of('/chat').on('connection', function (socket) { 

     socket.on('start-chat', function(data) { 
      socket.user_name = data.name; 
     } 

    }); 
} 

問:如何一個用戶可以更改的其他socket財產?例如,我需要更改其他用戶socket.user_name,擁有他的socket.id

回答

0

您可以訪問連接的客戶端並根據您需要的標準篩選它們。 IIRC你也可以通過ID直接訪問他們,如果你碰巧有身份證io.sockets.sockets[socket_id]

另一種方法是保持你自己的會話記錄。這意味着您可以使用您在每個連接上確定自己的密鑰進行索引。舉個例子:

var clientConnections = {}; 
sio.on('connection', function (socket) { 
    var key = <something unique, maybe based on socket.handshake data>; 
    clientConnections[key] = socket; 
} 

然後,您可以只訪問套接字參考其他通過clientConnections散列結果,其中:clientConnections[<some key]

一旦你有了那個引用,你應該能夠操作套接字,就好像它是你的事件回調的主題一樣。

+0

謝謝你的回答!但是如果有超過10000個在線用戶,clientConnections []能夠正常和快速地工作嗎? – sirjay

+0

你顯然必須進行測試,但我期望它的性能仍然合理。至少在與Socket.IO用於跟蹤連接本身的代碼相同的聯盟中,它畢竟也是在JS中實現的。 –

相關問題