1

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

4

1 回答 1

0

您可以访问已连接的客户端并根据您需要的任何标准对其进行过滤。IIRC如果您碰巧有ID,您也可以通过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 hash: 访问其他地方的套接字引用clientConnections[<some key]

一旦获得了该引用,您应该能够像操作事件回调的主题一样操作套接字。

于 2013-07-07T20:01:22.630 回答