当客户端与网络断开连接时,Websocket onclose未在chrome - Linux中触发

websocket onclose not triggered in chrome - linux when client is disconnected from the network

本文关键字:chrome 未在 Linux onclose Websocket 网络 客户端 断开 连接      更新时间:2023-09-26

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

Chrome在windows触发onclose事件,当我拔出网线(即onclose触发器与关闭代码1006 [abnormaly closed]如https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent所述),但Chrome在linux不触发任何事件。

请指出我做错了什么。

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

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

浏览器/操作系统应该注意到连接在您尝试发送数据时立即消失。拔下网线后尝试发送一些数据,看看是否会触发该事件。

还有,你等信号多久了?可能是TCP超时时间过长。

如果你仍然没有得到一个关闭的事件,这很可能是由于在实现中的错误。如果您绝对需要知道连接何时断开,可以使用自己的超时实现ping机制。我相信websocket协议定义了自己的ping协议,也许可以看看。

此外,对于chrome,似乎有一个问题提出了这一点。也许它会对你有帮助。