【问题标题】:Socket.io kick specific userSocket.io 踢特定用户
【发布时间】:2020-12-25 21:42:11
【问题描述】:

我有一个来自客户端的事件,它将套接字 id 传递给服务器,socket.emit('kick', socketId);。 我的意图是使用这个socketId 服务器端找到套接字,然后调用socketToBeKicked.disconnect()。如何找到特定的套接字?我尝试查看其他帖子,但大多数解决方案不再有效。或者有没有更好的方法可以实现踢球功能?

【问题讨论】:

    标签: javascript node.js express socket.io


    【解决方案1】:

    我想出了一个解决方案。与其试图在服务器端查找套接字 obj,我们可以从服务器向客户端发出一个事件,该事件将被踢,然后向服务器发出另一个事件以获取客户端的套接字 obj。

    client.js

    socket.emit('kick', socketId); // sent by the host
    
    socket.on('kick helper', () => { // sent by the user getting kicked
        socket.emit('kick helper');
    }
    

    server.js

    socket.on('kick', (socketId) => {
        socket.to(socketId).emit('kick helper');
    }
    
    socket.on('kick helper', () => { // now this socket obj is the user getting kicked
        socket.disconnect(); 
    }
    

    要让用户的套接字对象被踢,感觉还有很长的路要走。如果您有更好的解决方案,请分享,我很想知道!

    【讨论】:

    • 这也有依赖客户端响应“ping”以便您可以踢它的缺点。我们通常维护一个 websocket 对象的数组,我们将其他数据附加到这些对象(例如用户对象),以便我们可以更轻松地定位我们正在销毁的套接字。
    猜你喜欢
    • 2012-04-26
    • 2012-07-14
    • 2021-07-28
    • 2012-07-08
    • 1970-01-01
    • 2020-10-10
    • 2011-06-23
    • 2021-04-10
    • 1970-01-01
    相关资源
    最近更新 更多