簡體   English   中英

socket.io斷開某些客戶端的連接

[英]socket.io Disconnect certain client

我正在使用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()方法不起作用。 斷開連接的用戶仍然能夠接收來自其他用戶的消息。 那么如何正確地做到這一點呢? 謝謝。

假設您正在使用以下方式創建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 
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM