vue websocket 建立连接并添加心跳检测机制
图片:
代码:
新建一个文件夹,里面有两个文件
组件1:
index.js
import Bus from './bus.js'var websocketConnectdCount = 0export function newWebsocket() {var websocket = null// 判断当前环境是否支持Websocketif (window.WebSocket) {if (!websocket) {const ws = 'ws://172.16.24.23:58080/webSocket'websocket = new WebSocket(ws)} else {console.log('not support websocket')}// 连接成功建立得回调方法websocket.onopen = function(e) {heartCheck.reset().start() // 成功建立连接后,重置心跳检测websocket.send('socket heart') // 连接成功将消息传给服务端console.log('connected successfully')}// 连接发生错误 会继续尝试发生新得连接 5次websocket.onerror = function() {console.log('onerror连接发生错误')websocketConnectdCount++if (websocketConnectdCount <= 5) {newWebsocket()}}// 连接到消息得回调方法websocket.onmessage = function(e) {console.log('接受到消息了', e)var message = eif (message) {Bus.$emit('message', message)}heartCheck.reset().start() // 如果获取到消息,说明连接是正常的,重置心跳检测}// 接受到服务端关闭连接时的回调方法websocket.onclose = function() {console.log('onclose断开连接')}// 监听窗口事件 窗口关闭 主动断开连接window.onbeforeunload = function() {websocket.close()}// 心跳检测, 每隔一段时间检测连接状态,如果处于连接中,// 就向server端主动发送消息,来重置server端与客户端的最大连接时间,如果已经断开了,发起重连。var heartCheck = {timeout: 300000, // 5分钟发一次心跳,比server端设置的连接时间稍微小一点,在接近断开的情况下以通信的方式去重置连接时间。timeoutObj: null,serverTimeoutObj: null,reset: function() {clearTimeout(this.timeoutObj)clearTimeout(this.serverTimeoutObj)return this},start: function() {this.serverTimeoutObj = setInterval(function() {if (websocket.readyState === 1) {console.log('连接状态,发送消息保持连接')websocket.send('socket heart') // 连接成功将消息传给服务端heartCheck.reset().start() // 如果获得消息 说明连接正常 重置心跳检测} else {console.log('断开连接, 尝试重连')newWebsocket()}}, this.timeout)}}}
}
组件2:
bus.js
import Vue from 'vue'
export default new Vue()
页面引入:
<script>import Bus from '@/socket/bus'import { newWebsocket } from '@/socket/index'
</script>
created () {newWebsocket()Bus.$on('message', res => {this.getSock(res)})},
methods: {getSock(msg) {if (msg.data !== '服务器连接成功!') {let data = msg.datadata = JSON.parse(data)console.log(data, 'socketData') // data就是服务端发来的消息}}
}
vue websocket 建立连接并添加心跳检测机制相关推荐
- 在vue中实现使用webscoket进行心跳检测机制
<script>data() {// 心跳--startheartCheck: null,lockReconnect: false, //避免ws重连ws: null,wsUrl: nul ...
- Android通过WebSocket建立一个长连接(带心跳检测)从服务器端接收消息
最近公司要做一款内部使用的工具类app,方便销售部门打电话(其实就是在后台有好多用户数据,之前销售部门同事拨打电话,需要自己从销售后台查看用户手机号等信息,然后自己拿自己手机拨号,然后打出去.现在想实 ...
- Netty -Netty心跳检测机制案例,Netty通过WebSocket编程实现服务器和客户端长链接
Netty心跳检测机制案例 案例要求 编写一个Netty心跳检测机制案例,当服务器超过3秒没有读时,就提示读空闲 当服务器超过5秒没有写操作时,提示写空闲 服务器超过7秒没有读或者写操作时,就提示读写 ...
- netty的编解码、粘包拆包问题、心跳检测机制原理
文章目录 1. 编码解码器 2. 编解码序列化机制的性能优化 3. Netty粘包拆包 4. Netty心跳检测机制 5. Netty断线自动重连实现 1. 编码解码器 当你通过netty发送或者接受 ...
- Netty学习(七):心跳检测机制
一.什么是心跳检测机制 所谓心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性. 心跳机制主要是客户端和服务端长时间连 ...
- Netty(八) Netty心跳检测机制
1.什么是长链接和短链接 在HTTP/1.0中默认使用短连接.也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接.当客户端浏览器访问的某个HTML或其他类型的Web页中 ...
- netty 中的心跳检测机制
为什么要心跳检测机制 当服务端接收到客户端的连接以后,与客户端建立 NioSocketChannel 数据传输的双工通道,但是如果连接建立以后,客户端一直不给服务端发送消息,这种情况下是占用了资源,属 ...
- Netty 心跳检测机制
心跳检测机制 目的:就是用于检测 检测通信对方是否还"在线",如果已经断开,就要释放资源 或者 尝试重连. 大概的实现原理就是:在服务器和客户端之间一定时间内没有数据交互时, 即处 ...
- Netty空闲心跳检测机制
概述 Netty提供了一个读写空闲心跳检测机制的Handler,用于检测读空闲.写空闲.读写空闲. 如果服务端在一定时间内没有执行读请求,就会触发读空闲事件,一定时间内没有执行写请求,就会触发写空闲事 ...
最新文章
- ORA-01078与LRM-00109报错解决
- 计算机视觉算法与应用清华大学,计算机视觉——算法与应用
- 回顾 | Alibaba Cloud Native Day 杭州场圆满结束(附 PPT 下载)
- 贪吃蛇一直显示正在连接服务器,贪吃蛇大作战进不去怎么办 解决方法
- spock测试_使用Spock测试您的代码
- vuedraggable能实现自由拖拽功能吗?_基于 vue.js 仿禅道主页拖拽效果
- SSM配置后可以访问静态html文件但无法访问其他后台接口的解决方案
- 附资料:工程总承包项目管理流程图(全套)
- AI中的图像识别技术的原理及过程
- 对AD采样信号的简单滤波处理
- wps折线图如何画多条折线_wps word如何绘制一有一条线的折线图
- PHP获取MP3时长类
- 显卡的优化以提高计算机性能作用,显卡优化,详细教您如何设置NVIDIA(英伟达)显卡玩游戏性能更高...
- 面向对象系列(三)-抽象类的特点
- 【蓝桥杯】——七段数码管的运用
- iphone4 快捷键整理
- (一)mysql 运维基础篇(Linux云计算从入门到精通)
- 基于Spring Boot框架的驾校学员信息管理系统
- linux加载的驱动无法卸载,linux驱动加载后不能再卸载
- 水质在线监测系统方案
热门文章
- 君子性非异也 善假于物也(一) antlr4 处理json 词法和文法 简易版
- react ts hot update was not successful
- 20200324_W_Seismic risk assessment of complex transportation networks
- 清华姚班教授劝退文:​我见过太多PhD,精神崩溃、心态失衡、身体垮掉、一事无成...
- 女神节表白:因一个分号被拒!
- qqlite 插件开发总结
- Pymoo学习 (8):Gradients
- [PHP] 文件目录列表程序:H5ai(内置DPlayer)
- 计算机科学与技术分类号查询,计算机科学与技术专业论文
- 一个让日本人咬牙切齿的强贴