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

时间:2013-05-23 12:23:12

标签: 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的{​​{1}}触发器,但linux中的Chrome不会触发任何事件。

请说明我做了什么错误。

我的确切问题是,当网络断开连接时,Windows中的chrome会触发1006 [abnormaly closed],但是在linux的情况下,它不会被触发。

1 个答案:

答案 0 :(得分:4)

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

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

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

如果您仍然没有收到关闭事件,可能是由于实施中的错误。如果您绝对需要知道连接何时发生故障,请使用您自己的超时实现ping机制。我相信websocket协议定义了自己的ping协议,可能会考虑到这一点。

此外,对于铬,似乎有issue提交。也许它会帮助你。

相关问题