在建立连接之前"WebSocket是关闭的"是什么意思?

use*_*112 25 javascript websocket

我正在使用JavaScript和Union平台我将如何诊断这个问题?非常感谢.

leg*_*ter 21

如果您访问http://jsbin.com/ekusep/6/edit并查看JavaScript控制台,您将看到"在建立连接之前关闭WebSocket"已记录.我在Chrome中测试了这个.

在这段代码中,它意味着ws.close()在连接被提供机会之前被调用(通过用户代码).

因此,此错误的原因是代码在有机会实际连接之前尝试关闭WebSocket连接.

  • 我在整个项目目录中搜索了一下,发现没有`ws.close()`的实例.我错过了什么吗? (5认同)
  • 结果 ActionCable 默认使用端口 3000 而我不在端口 3000 上,哈哈。记住这一点,以备将来使用:) (2认同)

Bam*_*ier 13

在 React 中你需要将其添加到你的useEffectinreturn

useEffect(() => {
        const socket = new WebSocket(address);


        return () => {
            if (socket.readyState === 1) { // <-- This is important
                socket.close();
            }
        }
}, []);

Run Code Online (Sandbox Code Playgroud)

然而它不仅仅是最好的解决方案!您需要使用钩子而不是直接在视图/组件中使用套接字连接,它可以防止多次创建套接字连接。

此外,无论前端是否正在通信,套接字连接如果不使用,都应该由后端关闭。