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_namesocket.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: を介して、ソケット参照 else にアクセスできますclientConnections[<some key]

その参照を取得したら、イベント コールバックの対象であるかのようにソケットを操作できるはずです。

于 2013-07-07T20:01:22.630 に答える