客户端与网络断开连接时,不会在chrome-linux中触发websocket onclose

rak*_*aky 5 javascript websocket

我在服务器端使用java实现了websocket.在客户端我创建了websocket对象,我有自己的函数用于所有事件,包括onClose.我测试了重新连接...在chrome 26中使用websocket,Mozilla都是windows和chrome.

当我插入网络电缆时,Windows中的Chrome触发onclose事件(即https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent中提到的onclose具有密码的触发器)但Linux中的Chrome不会触发任何事件.1006 [abnormaly closed]

请提出我的错误.

我确切的问题是为什么在onclose网络断开时触发Windows中的chrome ,但是在linux的情况下,它不会被触发.

Wut*_*utz 7

这些应用程序可能没有注意到 TCP 连接中断。超时用于检测失败的 TCP 连接,我相信默认超时相当长。

当您尝试发送数据时,浏览器/操作系统应该注意到连接已断开。尝试拔掉网线后发送一些数据,看看是否会触发该事件。

另外,你等信号等了多久?也许连接只是有一个很长的 TCP 超时。

如果您仍然没有收到关闭事件,则可能是由于实施中的错误。如果您绝对需要知道连接何时中断,请实现带有您自己的超时的 ping 机制。我相信 websocket 协议定义了自己的 ping 协议,也许可以研究一下。

另外,对于 Chrome 来说,似乎有一个为此提出的问题。也许它会对你有帮助。