如何更改其他用户的socket属性?

时间:2013-07-07 16:21:02

标签: node.js sockets websocket socket.io chat

我正在使用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

1 个答案:

答案 0 :(得分:0)

您可以访问已连接的客户端,并根据您需要的标准对其进行过滤。 IIRC,如果您的身份证件恰好是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]

一旦你有了这个引用,你应该能够像操作回调一样操纵套接字。