【问题标题】:WebSocket is already in CLOSING or CLOSED state Socket ioWebSocket 已经处于 CLOSING 或 CLOSED 状态 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 处于关闭或关闭状态的问题吗? 任何形式的帮助都是可观的。

【问题讨论】:

  • 任何人都对此有想法。

标签: node.js reactjs socket.io


【解决方案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,
    });
    

    【讨论】:

      猜你喜欢
      • 2016-09-09
      • 2014-09-10
      • 1970-01-01
      • 2018-07-06
      • 2020-05-30
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多