【问题标题】:socket.io Disconnect certain clientsocket.io 断开某个客户端
【发布时间】:2019-01-21 05:24:10
【问题描述】:

我正在使用用于聊天项目的 socket.io 示例。我想为聊天应用程序添加密码保护。这只是简单的身份验证。如果用户输入了错误的密码,服务器将断开该用户的连接。

客户端代码:

var socket = io();
socket.emit('user name', username);
socket.emit('password', password);

服务器端代码:

socket.on('password', function (msg) {
    if (msg !== '123321') {
        io.emit('system info', 'Wrong password... Disconnecting ' + username+'...');
        io.close(true);
        return false;
    }
});

close() 方法不起作用。断开连接的用户仍然能够接收来自其他用户的消息。那么如何正确地做到这一点呢?谢谢。

【问题讨论】:

    标签: javascript jquery socket.io


    【解决方案1】:

    假设您正在创建一个 id(服务器端),例如:

    io.engine.generateId = (req) => {
        return custom_id++; // custom id must be unique
      }
    

    您可以使用.disconnect() 关闭特定连接,也可以使用socket.id 调用该id

    socket.on('password', function (msg) {
        if (msg !== '123321') {
            io.emit('system info', 'Wrong password... Disconnecting ' + username+'...');
            io.sockets.connected[socket.id].disconnect();//<-- in this case it's just a number 
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2014-01-09
      • 1970-01-01
      • 2014-08-19
      • 2017-07-17
      • 2013-03-03
      • 2012-05-17
      • 1970-01-01
      • 2015-11-21
      • 1970-01-01
      相关资源
      最近更新 更多