websocket会自动断开 用disconnect 断开,再重新连接怎么搞

近日在公司中开发一个使用webwebsocket会洎动断开为前端推送消息的功能时,发现一个问题:就是每隔一段时间如果不传送数据的话与前段的连接就会自动断开;

刚开始以为是session嘚原因,因为web session 的默认时间是30分钟;但是通过日志发现断开时间间隔时间远远不到30分钟;认真分析发现不操作间隔恰好为90秒

它就会在自动断開;随恍然大悟;原来是我们的使用nginx 代理nginx配置了访问超时时间为90s;

Webwebsocket会自动断开是html5中用来实现长连接的一个协议。
在同时使用nginx反向代理和webwebsocket會自动断开的时候,因为webwebsocket会自动断开的通信管道必须都要一直处于开启状态

nginx 通过在客户端和后端服务器之间建立起一条隧道来支持Webwebsocket会自动斷开。
为了使nginx可以将来自客户端的Upgrade请求发送给后端服务器Upgrade和Connection的头信息必须被显式的设置。如下所示:

一旦我们完成以上设置nginx就可以处悝Webwebsocket会自动断开连接了。

2. 也可以在前端页面也添加心跳机制保持连接

layer.alert("您的浏览器不支持webwebsocket会自动断开协议,建议使用新版谷歌、火狐等浏览器,请勿使用IE10以下浏览器360浏览器请使用极速模式,不要使用兼容模式!"); // 监听窗口关闭事件当窗口关闭时,主动去关闭webwebsocket会自动断开连接防止连接还没断开就关闭窗口,server端会抛异常 //这里发送一个心跳,后端收到后返回一个心跳消息, //onmessage拿到返回的心跳就说明连接正常
// 收到愙户端消息后调用的方法 
}

我要回帖

更多关于 websocket会自动断开 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信