我在服务器端使用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的情况下,它不会被触发。
答案 0 :(得分:4)
这些应用程序可能没有注意到TCP连接中断。超时用于检测失败的TCP连接,我相信默认超时很长。
当您尝试发送数据时,浏览器/操作系统应该注意到连接已经消失。拔下网线后,尝试发送一些数据,看看是否会触发事件。
另外,你等了多久信号?也许连接只有很长的TCP超时。
如果您仍然没有收到关闭事件,可能是由于实施中的错误。如果您绝对需要知道连接何时发生故障,请使用您自己的超时实现ping机制。我相信websocket协议定义了自己的ping协议,可能会考虑到这一点。
此外,对于铬,似乎有issue提交。也许它会帮助你。