var websocket = null;
var lockReconnect = false;
/*** 初始化websocket连接*/
function initWebSocket() {webSocketInit();
}/*** 连接ws*/
function webSocketInit(){try{if('WebSocket' in window) {websocket = new WebSocket(url);  //url为websocket地址} else {alert("该浏览器不支持websocket!");}}catch (e){websocketReconnect();  //尝试重连websocket}websocket.onopen = function(event) {console.log("建立连接");}websocket.onclose = function(event) {console.log('连接关闭')lockReconnect = false;websocketReconnect();  //尝试重连websocket}//建立通信后,监听到后端的数据传递过来了websocket.onmessage = function(event) {heartCheck.start();}websocket.onerror = function() {//alert('websocket通信发生错误!');}window.onbeforeunload = function() {websocket.close();}
}
/*** 重连ws*/
function websocketReconnect(){if (lockReconnect) {       // 是否已经执行重连return;};lockReconnect = true;//没连接上会一直重连,设置延迟避免请求过多tt && clearTimeout(tt);var tt = setTimeout(function () {webSocketInit();lockReconnect = false;console.log("正在重连");heartCheck.start();}, 5000)
}//心跳检测
var heartCheck = {timeout: 120000,timeoutObj: null,serverTimeoutObj: null,start: function () {console.log('start');var self = this;this.timeoutObj && clearTimeout(this.timeoutObj);this.serverTimeoutObj && clearTimeout(this.serverTimeoutObj);this.timeoutObj = setTimeout(function () {//发送测试信息,后端收到后,返回一个消息,websocket.send('hello');self.serverTimeoutObj = setTimeout(function () {//websocket.close();}, self.timeout);}, this.timeout)}
}/*** 发送ws消息*/
function sendWsMsgTimer(){console.log("发送消息");connectTimer = window.setInterval(function(){websocket.send('hello');},120000);}

websocket连接及心跳检测相关推荐

  1. JAVA实现长连接(含心跳检测)Demo

    实现原理: 长连接的维持,是要客户端程序,定时向服务端程序,发送一个维持连接包的.        如果,长时间未发送维持连接包,服务端程序将断开连接. 客户端:        Client通过持有So ...

  2. linux测试tcp长连接工具,Linux(服务器编程):44---TCP长连接、短连接(心跳检测)

    一.TCP连接的相关说明 ①使用TCP协议时,会在客户端和服务器之间建立一条虚拟的信道,这条虚拟信道就是指连接,而建议这条连接需要3次握手,拆毁这条连接需要4次挥手,可见,我们建立这条连接是有成本的, ...

  3. Socket Client 长连接及心跳检测

    简介: 所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象.一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制.从所处的地位来讲,套接 ...

  4. Android通过WebSocket建立一个长连接(带心跳检测)从服务器端接收消息

    最近公司要做一款内部使用的工具类app,方便销售部门打电话(其实就是在后台有好多用户数据,之前销售部门同事拨打电话,需要自己从销售后台查看用户手机号等信息,然后自己拿自己手机拨号,然后打出去.现在想实 ...

  5. 微信小程序WebSocket心跳检测与断来重连

    为什么要心跳检测 使用微信小程序WebSocket时,WebSocket在一定的时间没有进行通信就会断开连接,所以需要使用心跳检测. 那么心跳检测是什么呢,心跳检测顾名思义就是和人心脏动一样,客户端在 ...

  6. haproxy心跳检测_RabbitMQ 心跳检测(翻译)

    从 RabbitMQ 官网的 heartbeats 翻译. 简介 网络在很多情况下会失败,有时情况很微妙(比如 丢包率很高).操作系统检测到 TCP 断开是一个适中的时间(在 Linux 中默认时长是 ...

  7. vue websocket 建立连接并添加心跳检测机制

    图片: 代码: 新建一个文件夹,里面有两个文件 组件1: index.js import Bus from './bus.js'var websocketConnectdCount = 0export ...

  8. websocket心跳检测前后端架构

    websocket心跳检测前后端架构 本篇文章为初略架构websocket在前后端的心跳检测机制,实现相对毛糙. 下面介绍内容参照 廖雪峰 的描述,为了切换页面麻烦,这里就直接挑简要的信息复制黏贴过来 ...

  9. Netty -Netty心跳检测机制案例,Netty通过WebSocket编程实现服务器和客户端长链接

    Netty心跳检测机制案例 案例要求 编写一个Netty心跳检测机制案例,当服务器超过3秒没有读时,就提示读空闲 当服务器超过5秒没有写操作时,提示写空闲 服务器超过7秒没有读或者写操作时,就提示读写 ...

最新文章

  1. Ubuntu 18 系统安装教程
  2. 【EventBus】事件通信框架 ( 总结 | 手写事件通信框架完整代码示例 | 测试上述框架 )
  3. 【JavaScript】JavaScript模拟Class
  4. 北京时间3月9日消息,据国外媒体报道
  5. python3怎么读取excel_python3 读取excel
  6. TStringList 的Sorted属性
  7. 受网友U2U之托,DevComponents出品的TreeGX最新版本Patch出炉
  8. ubuntu 14.04 16.04 安装caffe+cuda8.0+pycafee总结
  9. JDK8新特性LocalDate、LocalTime和LocalDateTime
  10. [NOIp2016]天天爱跑步 线段树合并
  11. 年总结(八):关于思考的重新认识
  12. Web 网页开发的一点心得
  13. 文字图片转换成html代码,IMG4Me 网站在线把文字转换为图片
  14. 关于圆锥曲线切点弦二级结论的总结与再发现
  15. 微信商户号转账到个人银行卡加密算法及结果查询问题
  16. java-php-python-车辆调度管理系统计算机毕业设计
  17. 吐血整理:43种机器学习开源数据集(附地址/调用方法)
  18. HTML5期末大作业:网页设计——小米商城官网首页(1页) HTML+CSS+JavaScript web期末作业设计网页_清新淡雅个人网页大学生网页设计作业成品
  19. Packet Tracer 5.0建构CCNA实验攻略——帧中继Frame Relay
  20. OFD文件怎么打开?OFD免费转PDF?

热门文章

  1. [附源码]计算机毕业设计JAVA流浪动物领养系统
  2. JavaScript (四) ——构造函数原型 , 原型链 和继承
  3. 黑马程序员之javascript学习笔记:雪花飞舞特效
  4. 苹果手机怎么取消优酷自动续费_自动续费扣费不提醒、取消难?爱奇艺优酷等11家视频音频网站将全面整改...
  5. 父亲节python代码_父母作文
  6. php生成游客id_PHP根据用户ID生成唯一的邀请码 | 剑花烟雨江南
  7. 关于支付宝的免签支付技术
  8. 2022渗透测试-3款最常用的漏洞扫描工具
  9. Linux命令之设置用户密码passwd
  10. 淘宝美工项目开篇(需求分析)