图片:

代码:
新建一个文件夹,里面有两个文件

组件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 建立连接并添加心跳检测机制相关推荐

  1. 在vue中实现使用webscoket进行心跳检测机制

    <script>data() {// 心跳--startheartCheck: null,lockReconnect: false, //避免ws重连ws: null,wsUrl: nul ...

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

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

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

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

  4. netty的编解码、粘包拆包问题、心跳检测机制原理

    文章目录 1. 编码解码器 2. 编解码序列化机制的性能优化 3. Netty粘包拆包 4. Netty心跳检测机制 5. Netty断线自动重连实现 1. 编码解码器 当你通过netty发送或者接受 ...

  5. Netty学习(七):心跳检测机制

    一.什么是心跳检测机制 所谓心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性. 心跳机制主要是客户端和服务端长时间连 ...

  6. Netty(八) Netty心跳检测机制

    1.什么是长链接和短链接 在HTTP/1.0中默认使用短连接.也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接.当客户端浏览器访问的某个HTML或其他类型的Web页中 ...

  7. netty 中的心跳检测机制

    为什么要心跳检测机制 当服务端接收到客户端的连接以后,与客户端建立 NioSocketChannel 数据传输的双工通道,但是如果连接建立以后,客户端一直不给服务端发送消息,这种情况下是占用了资源,属 ...

  8. Netty 心跳检测机制

    心跳检测机制 目的:就是用于检测 检测通信对方是否还"在线",如果已经断开,就要释放资源 或者 尝试重连. 大概的实现原理就是:在服务器和客户端之间一定时间内没有数据交互时, 即处 ...

  9. Netty空闲心跳检测机制

    概述 Netty提供了一个读写空闲心跳检测机制的Handler,用于检测读空闲.写空闲.读写空闲. 如果服务端在一定时间内没有执行读请求,就会触发读空闲事件,一定时间内没有执行写请求,就会触发写空闲事 ...

最新文章

  1. ORA-01078与LRM-00109报错解决
  2. 计算机视觉算法与应用清华大学,计算机视觉——算法与应用
  3. 回顾 | Alibaba Cloud Native Day 杭州场圆满结束(附 PPT 下载)
  4. 贪吃蛇一直显示正在连接服务器,贪吃蛇大作战进不去怎么办 解决方法
  5. spock测试_使用Spock测试您的代码
  6. vuedraggable能实现自由拖拽功能吗?_基于 vue.js 仿禅道主页拖拽效果
  7. SSM配置后可以访问静态html文件但无法访问其他后台接口的解决方案
  8. 附资料:工程总承包项目管理流程图(全套)
  9. AI中的图像识别技术的原理及过程
  10. 对AD采样信号的简单滤波处理
  11. wps折线图如何画多条折线_wps word如何绘制一有一条线的折线图
  12. PHP获取MP3时长类
  13. 显卡的优化以提高计算机性能作用,显卡优化,详细教您如何设置NVIDIA(英伟达)显卡玩游戏性能更高...
  14. 面向对象系列(三)-抽象类的特点
  15. 【蓝桥杯】——七段数码管的运用
  16. iphone4 快捷键整理
  17. (一)mysql 运维基础篇(Linux云计算从入门到精通)
  18. 基于Spring Boot框架的驾校学员信息管理系统
  19. linux加载的驱动无法卸载,linux驱动加载后不能再卸载
  20. 水质在线监测系统方案

热门文章

  1. 君子性非异也 善假于物也(一) antlr4 处理json 词法和文法 简易版
  2. react ts hot update was not successful
  3. 20200324_W_Seismic risk assessment of complex transportation networks
  4. 清华姚班教授劝退文:​我见过太多PhD,精神崩溃、心态失衡、身体垮掉、一事无成...
  5. 女神节表白:因一个分号被拒!
  6. qqlite 插件开发总结
  7. Pymoo学习 (8):Gradients
  8. [PHP] 文件目录列表程序:H5ai(内置DPlayer)
  9. 计算机科学与技术分类号查询,计算机科学与技术专业论文
  10. 一个让日本人咬牙切齿的强贴