WebSocket 已经处于 CLOSING 或 CLOSED 状态 Socket io
Posted
技术标签:
【中文标题】WebSocket 已经处于 CLOSING 或 CLOSED 状态 Socket io【英文标题】:WebSocket is already in CLOSING or CLOSED state Socket io 【发布时间】:2019-04-13 07:49:44 【问题描述】:Socket io 返回错误为: WebSocket 已经处于 CLOSING 或 CLOSED 状态的 Socket io。
节点 JS:
socket.to(socketId).emit('details', userdetails: username );
反应 JS:
socket.on('details', data =>
console.log(data.userdetails);
);
你能帮我解决 WebSocket 处于关闭或关闭状态的问题吗? 任何形式的帮助都是可观的。
【问题讨论】:
任何人都对此有想法。 【参考方案1】:1) 回滚到 socket.io-client 版本 2.0.3。最新的 2.1.1 版本有问题。
npm install socket.io-client@2.0.3 --save
2) 另外,请确保在 React.js 中自行清理并关闭套接字...
componentDidMount()
this.socket = io('http://www.example.com');
componentWillUnmount()
this.socket.close();
【讨论】:
【参考方案2】:默认 pingTimeout 从 60000 (v2.0.4) 更改为 5000 (v2.1.0+),这对于 Chrome 等某些浏览器来说还不够。
在 v2.1.0+(包括最新的 v2.2.0)上解决此问题的方法是覆盖服务器上的默认 pingTimeout。
const io = require('socket.io')(server,
pingTimeout: 60000,
);
【讨论】:
以上是关于WebSocket 已经处于 CLOSING 或 CLOSED 状态 Socket io的主要内容,如果未能解决你的问题,请参考以下文章
Meteor WebSocket 已处于 CLOSING 或 CLOSED 状态错误
如何正确取出 NodeJs 中 expressWs 模块的逻辑?
Linux下netstat查看处于TIME_WAIT的socket过多
无法在“WebSocket”上执行“发送”:仍处于 CONNECTING 状态