js websocket断开重连实例代码,请根据自己需求做出相应改动Vue中使用websocket

$(function() {var lockReconnect = false;//避免重复连接var ws = null; //WebSocket的引用var wsUrl = "xxxxxx"; //这个要与后端提供的相同//创建WebSocket连接,如果不确定浏览器是否支持,可以使用socket.js做连接function createWebSocket(url){try {if ('WebSocket' in window) {ws = new WebSocket("ws://" + url + "/socketServer");} else {ws = new SockJS("http://" + url + "/sockjs/socketServer");}initEventHandle();} catch (e) {reconnect(wsUrl);}}function reconnect(url) {if(lockReconnect) return;lockReconnect = true;//没连接上会一直重连,设置延迟避免请求过多setTimeout(function () {createWebSocket(wsUrl);console.log("正在重连,当前时间"+new Date())lockReconnect = false;}, 5000); //这里设置重连间隔(ms)}/*********************初始化开始**********************/function initEventHandle() {// 连接成功建立后响应ws.onopen = function() {console.log("成功连接到" + wsUrl);//心跳检测重置heartCheck.reset().start();}// 收到服务器消息后响应ws.onmessage = function(e) {//如果获取到消息,心跳检测重置//拿到任何消息都说明当前连接是正常的heartCheck.reset().start();//Json转换成Objectvar msg = eval('(' + e.data + ')');if(msg.message == "heartBeat"){//忽略心跳的信息,因为只要有消息进来,断线重连就会重置不会触发}else{//处理消息的业务逻辑}}// 连接关闭后响应ws.onclose = function() {console.log("关闭连接");reconnect(wsUrl);//重连}ws.onerror = function () {reconnect(wsUrl);//重连};} /***************初始化结束***********************///心跳检测var heartCheck = {timeout: 15000,//毫秒timeoutObj: null,serverTimeoutObj: null,reset: function(){clearTimeout(this.timeoutObj);clearTimeout(this.serverTimeoutObj);return this;},start: function(){var self = this;this.timeoutObj = setTimeout(function(){//这里发送一个心跳,后端收到后,返回一个心跳消息,//onmessage拿到返回的心跳就说明连接正常ws.send("HeartBeat");console.log("HeartBeat");self.serverTimeoutObj = setTimeout(function(){//如果超过一定时间还没重置,说明后端主动断开了ws.close();//如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次}, self.timeout)}, this.timeout)}}// 发送字符串消息$("#sendBtn").click(function() {if (ws.readyState ==1) {//自定义消息串,让后端接收ws.send("xxxxxx");}else{alert("当前连接超时,请刷新重试!");}return false;});// 强制退出window.onunload = function() {ws.close();}createWebSocket(wsUrl);/**启动连接**/
});

https://www.cnblogs.com/hellxz/p/9166138.htmlhttps://www.cnblogs.com/1wen/p/5808276.html

js websocket断线重连相关推荐

  1. [javascript] js websocket断线重连库ReconnectingWebSocket

    websocket在连接的时候 , 受网络影响 或者长时间没有通信被服务端关闭 , 都需要断线重连机制 自己写断线重连比较麻烦 , 可以使用这个js库 ReconnectingWebSocket.js ...

  2. js websocket自动重连机制(心跳后续)

    window.webSocket = {}; var heartCheck = {lockReconnect: false, //避免ws重复连接maxReconnectionDelay: 30 * ...

  3. js websocket断开重连机制

    废话不多说 直接上代码 建议直接放在编辑器里面看 比较具体 var socket; //websocket的实例var lockReconnect = false; //避免重复连接function ...

  4. 【网络通信】websocket如何断线重连

    Vue <template><div><button @click="sendDevName('xxxxxxxx')">发送</butto ...

  5. 微信小程序数据拼接_微信小程序使用原生WebSokcet实现断线重连及数据拼接

    以前做小程序为了应急找了个插件去链接WebSokcet,文章传送门. 回过头在新项目中再次使用时出现了些许问题,不一一赘述.遂决定好好用一下原生的WebSokcet. 一.说明 1.小程序原生的Web ...

  6. 学习使用js链接websocket服务断线重连的方法

    学习使用js链接websocket服务断线重连的方法 前言 思路 示例代码 前言 我们在是有websocekt的时候,有的时候由于某些原先websocket会断开连接,我们需要重现连接,该如何实现呢? ...

  7. WebSocket的心跳机制和断线重连

    背景 在服务器重启或是弱网情况下,前端不能保证一直连接成功.因此在出现被动断开的情况下,需要有心跳机制和断线重连的功能. 心跳机制:客户端每隔一段时间向服务端发送一个特有的心跳消息,每次服务端收到消息 ...

  8. webSocket使用心跳包实现断线重连

    首先new一个webscoket的连接 let noticeSocketLink = new WebSocket('webSocket的地址') 这里是连接成功之后的操作 linkNoticeWebs ...

  9. springboot集成websocket(一)客户端、客户端断线重连、客户端连接验证

    springboot集成websocket客户端 一.首先是导入依赖包 1.在pom.xml中加入下述即可 <!--websocket作为客户端 --><dependency> ...

最新文章

  1. Python os.path模块的使用
  2. Puppeteer入门初探
  3. 08-图7 公路村村通 (30 分
  4. p50会搭载鸿蒙吗,华为Mate40和华为P50也会搭载鸿蒙,华为Mate30跌至白菜价让路
  5. Vim升华之树形目录插件NERDTree安装图解
  6. 送书《R语言数据分析和可视化》 | 这个为生信学习和生信作图打造的开源R教程真香!!!...
  7. 设计灵感图片,到哪里搜索!看这里!
  8. JS基础 - - if 练习二
  9. 金融支付-银联卡支付系统产品介绍
  10. 海淘尺码表,贡献给论坛买衣服裤子鞋子的朋友
  11. 配置nginx报错no “ssl_certificate“ is defined in server listening on SSL port while SSL handshaking
  12. sagemath matlab,sagemath 是否真的好用?还是隐藏了大坑?
  13. 光明区支持总部企业高质量发展实施办法(征求意见稿)
  14. 快应用如何接入微信支付
  15. TNF拮抗剂的结构、功能与结核感染_Wallis2008
  16. 【54期】Java序列化三连问,是什么?为什么需要?如何实现?
  17. 何登成大神对Innodb加锁的分析
  18. Transformer论文学习笔记
  19. Java如何实现实时消息提醒???
  20. 外贸行业网站的seo优化推广怎么做?优化技巧详解

热门文章

  1. Python课程设计:图书馆管理系统
  2. c语言张丽萍孟繁军版没答案,C语言程序设计基础教程(高等学校应用型特色规划教材)...
  3. HDMI接口电路设计
  4. Bootstrap的container和container-fluid
  5. [C#基础]说说lock到底锁谁?
  6. ubuntu 制作iso镜像
  7. 名画04 阎立本《孔子弟子像》
  8. Java Map交集 并集 差集(可直接运行)
  9. 自监督对比学习系列论文(二):有引导对比学习--SCCL,SwAV,PCL,SupervisedCon
  10. CSS层叠样式表之选择器