使用node.js WebSocket库ws时如何知道客户端与服务器断开连接

8ehkhllq  于 2022-12-13  发布在  Node.js
关注(0)|答案(1)|浏览(712)

我正在使用node.js运行Web Socket,代码只运行了一半,它可以创建连接并接收消息,

var { WebSocketServer, WebSocket } = require('ws')
const ws_server = new WebSocketServer({   port: 8080    });

ws_server.on('connection', (ws) => {
    ws.on("message", function(msg,isBinary) { 
        console.log('on message',msg.toString()); 
    })
    // something wrong, client is not defined
    ws.on('close', (client) => console.log('Client has disconnected!'),client);  
});

但是当客户端关闭连接时,我想知道哪个客户端断开了连接。
客户端已经断开连接!
上面的代码给了我一个客户端没有定义的错误,所以我的问题是当客户端与服务器断开连接时,如何知道客户端信息-客户端id。

slmsl1lt

slmsl1lt1#

ws客户端,您在连接回调中拥有的客户端是Object,您可以向其添加任何所需的属性,并且在连接处于活动状态时以及连接关闭时始终保留该属性。因此,添加任何有助于识别您的客户端的属性,并在客户端的on close回调中使用它。

const wss = new WebSocketServer({port: 8080})
wss.on('connection', (ws) => 
    { ws.user = CLIENT_NAME; 
      console.log('CLIENT CONNECTION ESTABLISHED', ws.user); 
      ws.on('close', (code, data) => {
        console.log('CLIENT DISCONNECTED: ', ws.user))
      }
    }
)

在此期间,您可能需要对连接的客户端进行身份验证,因此请遵循以下说明。它们将帮助您更好地识别传入的客户端连接。

相关问题