我正在使用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
您可以访问连接的客户端,并根据您需要的条件对它们进行筛选。IIRC如果你碰巧有io.sockets.sockets[socket_id]
的ID,你也可以直接通过ID访问它们
另一种方法是保留自己的会话记录。这意味着你可以使用一个键进行索引,这个键可以在每次连接时确定你自己。一个例子:
var clientConnections = {};
sio.on('connection', function (socket) {
var key = <something unique, maybe based on socket.handshake data>;
clientConnections[key] = socket;
}
然后,您可以通过clientConnections散列访问套接字引用else-where:clientConnections[<some key]
。
一旦有了该引用,就应该能够像处理事件回调的主题一样处理套接字。