学习使用js链接websocket服务断线重连的方法
学习使用js链接websocket服务断线重连的方法
- 前言
- 思路
- 示例代码
前言
我们在是有websocekt的时候,有的时候由于某些原先websocket会断开连接,我们需要重现连接,该如何实现呢?这就需要我们仔细研究websocket的api的使用了。
思路
首先我们要熟悉如下几个api
1、连接websocket的服务器的websocekt函数
2、websocekt断开后触发的onclose函数
由上面这两个函数就可以了,大致思路梳理一下:
1、首先开发一个函数websocketinit,函数主要是websocket的连接逻辑,监听信息,发送信息
2、监听onclose事件,onclose触发后重新执行websocketinit事件
示例代码
//1.创建websocket客户端
var host = window.location.host; #IP
var ut = "{{ ut }}";
var wsServer = 'wss://' + host + '/notify/wxlogin?ut=' + ut;var timeConnect = 0;
webSocketInit(wsServer);//socket初始化
function webSocketInit(service) {var ws = new WebSocket(service);ws.onopen = function () {console.log("已连接TCP服务器");ws.send('Hello WebSockets!');};//接收服务端的消息,根据自己的业务需求,开发对应的功能ws.onmessage = function (evt) {console.log('Received Message: ' + evt.data);data = JSON.parse(evt.data);console.log(data);if (data.status != 0) {alert("扫码错误");ws.close();}//判断身份,登录成功 并跳转到指定的页面if (data.data.wx_login == 1) {//window.location.href = "http://" + host + "/admin"window.location.href = "/admin"}if (data.data.wx_login == 0) {//alert(data.data.message)$(".qr_code").css("display", "none");$(".tips").text(data.data.message)}console.log(data.data);};ws.onclose = function () {console.log('服务器已经断开');reconnect(service);};
}// 重连
function reconnect(service) {// lockReconnect加锁,防止onclose、onerror两次重连timeConnect++;console.log("第" + timeConnect + "次重连");// 进行重连setTimeout(function () {webSocketInit(service);}, 1000);}// 心跳 * 回应
setInterval(function () {var websocket = new WebSocket(wsServer);websocket.send('');}, 1000 * 100)
学习使用js链接websocket服务断线重连的方法相关推荐
- 【网络通信】websocket如何断线重连
Vue <template><div><button @click="sendDevName('xxxxxxxx')">发送</butto ...
- js 链接websocket马上断开_SpringBoot+WebSocket实现简单的数据推送
问题背景 为什么要要用websocket呢?websocket相对于传统http协议有什么优势呢? http协议有一个缺陷,就是通信只能由客户端发起,服务器返回数据,不能做到服务器主动向客户端推送.这 ...
- WebSocket 实现断线重连 详细代码 项目源码
小项目源码https://gitee.com/chen_yan_ting/web-socket_dou_di_zhu 实现原理: WebSocket的onClose 连接关闭回调方法webSocket ...
- node.js创建WebSocket服务,并使用原生js ES6完成对WebSocket数据交互
注意,前情提示: 本代码基于<Node.js(nodejs)对本地JSON文件进行增.删.改.查操作(轻车熟路)> 传送门Node.js(nodejs)对本地JSON文件进行增.删.改.查 ...
- js 链接websocket马上断开_WebSocket之基于STOMP协议的广播模式实现群聊功能
又是一个老套的古诗词赏析 不恨此花飞尽,恨西园.落红难缀.--苏轼<水龙吟·次韵章质夫杨花词> WebSocket与STOMP协议 相关简介 WebSocket WebSocket 是一种 ...
- 校园网断线重连,用爬虫来搞定!
前言 hello,大家好,我是大赛哥(弟),好久不见,甚是想念. 最近因为有小需求研究了两登录的加密,也成功解密加密的参数,在这里给大家分享一波. 前段时间,有个同学他实验室服务器校园网老是掉,想问问 ...
- Nginx反向代理WebSocket服务连接报错:WebSocket connection to “wssxxxxxx“ failed
最近使用 node.js 搭建 WebSocket 服务,在本地测试 connection 都是正常,于是部署到 Linux 服务上,需要用 Nginx 来反向代理 WebSocket 服务.浏览器控 ...
- java redis 断线重连_redis断线重连代码详解
redis断线重连代码详解 发布时间:2020-05-08 17:59:39 来源:亿速云 阅读:459 作者:Leah redis断线怎么重连?这个问题可能是我们日常工作经常遇到的.本篇文章主要探讨 ...
- [javascript] js websocket断线重连库ReconnectingWebSocket
websocket在连接的时候 , 受网络影响 或者长时间没有通信被服务端关闭 , 都需要断线重连机制 自己写断线重连比较麻烦 , 可以使用这个js库 ReconnectingWebSocket.js ...
最新文章
- 实验三 Gmapping建图
- 智源发布:悟道 · 文汇 | 面向认知,超大规模新型预训练模型
- 互联网协议 — GRE 通用路由封装协议
- Openldap配置TLS加密传输(完整版——shell脚本实现[即在客户端执行代码,即可实现TLS加密])
- Python学习笔记:Day 16 编写移动App
- boost::core模块实现分配const void指针
- TNN MatConvertParam参数scale和bias设置
- 从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装
- windows 下安装 rabbitmq报init terminating in do_boot错误
- python 卡方分箱算法_python实现二分类的卡方分箱示例
- [程序设计语言] 堆和栈的全面总结
- .net core linux安装
- 9203班级纪律 1202
- 华为员工利用Bug越权访问机密卖给第三方,获利1.6万元,被判有期徒刑一年...
- js uri解码_js对url进行编码和解码(三种方式区别)(转)
- keras系列︱Application中五款已训练模型、VGG16框架(Sequential式、Model式)解读(二)
- [转]Google Maps地图投影全解析
- python判断是否登录成功_python-42: 怎么判断模拟登录是否成功
- Sublime 初始化
- 生活,人艰不拆......
热门文章
- 使用lnmp安装zabbix3.4.4并设置163邮箱报警(超详细)
- 建立私有CA实现证书申请颁发
- Vue教程(八)v-bind指令动态绑定
- LeetCode-590. N-ary Tree Postorder Traversal
- Android Audio(七)—— AudioFocus(duck)
- cloudera manager 安装界面指定主机无法选中解决方案
- onvif 模拟摄像头_ONVIF 设备发现(网络摄像头)——实例笔记
- Flash ActionScript3 一种按照真实占位宽度截短字符串的方法
- NGINX免费配置二级域名及同时开启HTTPS(HTTP强制转HTTPS)nodejs的express后端项目,前端next.js的SSR项目
- label标签 的使用与作用