当客户端与网络断开连接时,Websocket onclose未在chrome - Linux中触发
websocket onclose not triggered in chrome - linux when client is disconnected from the network
我在服务器端使用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,似乎有一个问题提出了这一点。也许它会对你有帮助。
相关文章:
- 事件侦听器未在chrome扩展中的options.js中启动
- 猫头鹰旋转木马动画未在Chrome中应用
- 网页未在 Chrome 中加载
- HTML/JavaScript未在空白chrome页面上运行
- Chrome API未在嵌套回调中注入cookie
- Asp页面未在firefox或chrome中运行
- 未捕获的引用错误:未在Javascript(Chrome控制台)中定义文档
- 未在内容脚本Chrome扩展上触发事件
- Chrome 未在画布中绘制特定的 jpg 图像
- SVG 异物未在 Chrome 中显示
- 未在IE中填充的列表框在FF和Chrome中工作
- Chrome扩展程序的内容脚本未在特定网站上注入
- 弹出窗口.js 未在 Chrome 扩展程序中的 Popup 的头部标签中执行.html Popup
- Chrome 内容脚本未在 Ember 网站上执行
- 使用 jQuery 显示的图像未在 Chrome 和 IE 上显示
- 选择未在 Chrome 中执行 onclick for 选项的元素
- onMessage 未在 Chrome 扩展程序上执行
- IndexedDB.open 回调未在 Chrome 上调用
- 未在火狐浏览器的选择列表中选择值(适用于chrome,safari,opera)
- Ckeditor 实例就绪未在 chrome 中触发(仅限某些系统)