【问题标题】:how to change other users socket properties?如何更改其他用户的套接字属性?
【发布时间】:2013-07-05 00:47:57
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您可以访问已连接的客户端并根据您需要的任何条件对其进行过滤。 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 哈希访问其他地方的套接字引用:clientConnections[&lt;some key]

    一旦你有了那个引用,你应该能够像处理事件回调的主题一样操作套接字。

    【讨论】:

    • 感谢您的回答!但是如果有 10000+ 的在线用户,clientConnections[] 会不会又快又好?
    • 您显然必须进行测试才能确定,但​​我希望它的性能仍然是合理的。至少与 Socket.IO 用于跟踪连接本身的代码处于同一联盟,毕竟它也是在 JS 中实现的。
    猜你喜欢
    • 2022-01-09
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2017-08-05
    • 1970-01-01
    相关资源
    最近更新 更多