javascript – websocket onclose在chrome-linux中没有触发,当客户端与网络断开连接时

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

当我插入网络电缆时,Windows中的Chrome触发onclose事件(即关闭代码1006 [异常关闭]的关闭触发器,如https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent中所述)但Linux中的Chrome不会触发任何事件.

请提出我的错误.

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

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

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

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

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

此外,对于铬,似乎有一个issue申请.也许它会帮助你.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...