博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webSocket使用心跳包实现断线重连
阅读量:6956 次
发布时间:2019-06-27

本文共 1370 字,大约阅读时间需要 4 分钟。

首先new一个webscoket的连接

let noticeSocketLink = new WebSocket(‘webSocket的地址’)

这里是连接成功之后的操作

linkNoticeWebsocket(){        noticeSocketLink.onopen = ()=>{    //在连接成功打开的时候调用断线重连的函数,传入websocket对象           webCloseLink(noticeSocketLink)        }        this.noticeSocketLink.onmessage = res => {          console.log("res")       }        noticeSocketLink.onclose = res => {          console.log("websocket is closed")        }},

//断开连接,断线重连的函数

webCloseLink(WebSocketId){  WebSocketId.send("心跳包内容")  // 每个15秒发送一次心跳包  let hb = setInterval(()=>{    WebSocketId.send("心跳包内容")    // 检测到websocket连接断开    if(WebSocketId.readyState == 2 || WebSocketId.readyState == 3){      clearInterval(this.hb)      let i = 1      let myVar = setInterval(()=>{        if(WebSocketId.readyState == 2 || WebSocketId.readyState == 3){          // 重新new一个websocket的连接          this.noticeSocketLink = new WebSocket(WebSocketId.url);          WebSocketId = this.noticeSocketLink;          if(i == 5){            clearInterval(myVar);            // location.reload();            return          }          i++        }else if(WebSocketId.readyState == 0){        }else if(WebSocketId.readyState == 1){ // websocket重连成功          this.linkNoticeWebsocket();          clearInterval(hb)          clearInterval(myVar)        }      },4*1000)    }  }, 15000)},

 

转载于:https://www.cnblogs.com/qisimx/p/10518355.html

你可能感兴趣的文章
Redis集群master选举时长测试
查看>>
linux IPC对象的持续性的说明
查看>>
创建带返回值的函数
查看>>
CS799 - Data-Driven Development with Python
查看>>
shell 脚本 变量使用,取消一个变量,echo
查看>>
Java中的synchronized、volatile、ReenTrantLock、AtomicXXX
查看>>
mysql语句判断一天操作记录的个数
查看>>
reduce|sum
查看>>
WCF Ria Services
查看>>
mysql之 mysql 5.6不停机主从搭建(一主一从基于GTID复制)
查看>>
面试流程
查看>>
gdal以GA_Update方式打开jpg文件的做法
查看>>
yii2弹出层
查看>>
OSSSME - 开源软件助力中小企业发展
查看>>
基础才是重中之重~值类型和引用类型
查看>>
通过php动态传数据到highcharts
查看>>
正则表达式全部符号解释
查看>>
百度eCharts体验
查看>>
使用python实现用微信远程控制电脑
查看>>
JavaScript 的 WebAssembly
查看>>