js创建websocket后调用了close并打印了状态码为3,状态码3代表已完全关闭了websocket。可是在终端中端口却一直占用
import WebSocket from 'ws';
var ws = null
export const initWSClient = (url) => {
ws = new WebSocket(url)
ws.on('open',() => {
ws.send(JSON.stringify({
code: 200,
msg: 'WS连接成功'
}));
})
ws.on('close', () => {
ws.removeAllListeners()
console.log(ws.readyState)
})
}
export const closeWs = () => {
ws.close()
}
export const onmessage = (msg) => {
ws.send(msg)
}
我打印了readyState为3 以为是个异步关闭端口需要等待,也并没有关闭端口 除非我kill -9 掉进程,我觉得使用nodejs的exec执行kill -9是个不明智的行为。
关闭端口号及相关监听
前端关闭socket只会关掉当前应用和socket的链接,并不会杀掉socket的服务,就和微信一样,当一个用户退出了微信,调用了close方法,关闭的只是这个用户和socket的联系,这个服务并不会并不会消失