本文作者:DurkBlue

线上websocket如何解决自动断开的问题推荐

线上websocket如何解决自动断开的问题摘要: WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客...

线上websocket如何解决自动断开的问题 第1张

WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层。

WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。                 --维基百科

最近折腾了一下websocket,在本地服务器跑起来一点问题都没有,但是当我把他部署在线上服务器就出现了一些问题。

如题所说,websocket在握手成功后,如果不发消息,过段时间(一般用秒来算)就会自动断开,那么怎么才能不断开呢?网上搜索后发现可以设置一个心跳包,每隔小于断开连接的时间内执行一次,内容主要是给服务端发送一个固定的消息,服务端监听到这个消息后再返回一个自定义的收到消息,这样websocket就不会再自动断开了。

主要步骤:

1、设置一个setTimeout方法,根据情况设置执行时间。

2、在连接成功的onopen回调函数执行这个setTimeout方法。

  1. //定时器方法

  2. function startTimer(){

  3.     timer = setTimeout( function(){

  4.     ws.send('{"type":"heartbeat","content":"ping"}')

  5. },8000)

  6. }

3、接收服务器返回的消息。

线上websocket如何解决自动断开的问题 第2张

4、如果服务器返回了消息,就将计时器清空并且重新计时。

此篇文章由DurkBlue发布,转载一下需要注明来处
文章投稿或转载声明

来源:DurkBlue版权归原作者所有,转载请保留出处。本站文章发布于 2020-01-29
温馨提示:文章内容系作者个人观点,不代表DurkBlue博客对其观点赞同或支持。

赞(2)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论取消回复

快捷回复:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog

评论列表 (暂无评论,2141人围观)参与讨论

还没有评论,来说两句吧...