一尘不染

如何终止WebSocket连接?

node.js

是否可以在不关闭整个服务器的情况下终止服务器的Websocket连接?如果是这样,我该如何实现呢?

注意:我使用NodeJS作为后端和’ws’websocket模块。


阅读 2599

收藏
2020-07-07

共1个答案

一尘不染

如果要踢所有客户端而不关闭服务器,则可以执行以下操作:

for(const client of wss.clients)
{
  client.close();
}

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
2020-07-07