是否可以在不关闭整个服务器的情况下终止服务器的Websocket连接?如果是这样,我该如何实现呢?
注意:我使用NodeJS作为后端和’ws’websocket模块。
如果要踢所有客户端而不关闭服务器,则可以执行以下操作:
for(const client of wss.clients) { client.close(); }
wss.clients如果您要特别寻找一个,也可以进行过滤。如果您要踢客户端作为连接逻辑的一部分(即,它发送错误的数据等),则可以执行以下操作:
wss.clients
let WebSocketServer = require("ws").Server; let wss = new WebSocketServer ({ port: 8080 }); wss.on('connection', function connection(ws) { ws.send('something'); ws.close(); // <- this closes the connection from the server });
和一个基本的客户
"use strict"; const WebSocket = require("ws"); let ws = new WebSocket("ws://localhost:8080"); ws.onopen = () => { console.log("opened"); }; ws.onmessage = (m) => { console.log(m.data); }; ws.onclose = () => { console.log("closed"); };
你会得到:
d:/example/node client opened something closed