图片:

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

组件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. hadoop和python的关系_Python 的 map 和 reduce 和 Hadoop 的 MapReduce 有什么关系?
  2. svn 不支持http 客户端_Xversion for mac(SVN客户端)
  3. flex tree 展开树节点
  4. Linux重启命令reboot
  5. 量产之后计算机读不出u盘,求大神、我量产没成功然后U盘就电脑上就不显示了...
  6. 张一鸣批评的互联网“语言腐败”,危害到底有多大?
  7. C#.Net工作笔记012---c# 文件操作_文件路径操作_随时更新
  8. 5 天 6 亿 3000 万数据泄露,怎么做才能跑赢骗子?
  9. hbase 学习(十二)非mapreduce生成Hfile,然后导入hbase当中
  10. 代理模式 委派模式 策略模式_委派模式和策略模式
  11. [导入]SQL Server存储过程编程经验技巧
  12. 基于stm32的语音识别系统
  13. 南京大学计算机考研资料汇总
  14. pr如何处理音效,如何让你的声音变得干净又清晰?PR音频降噪教程
  15. excel合并工作簿
  16. 关于编译优化选项o3的问题
  17. mysql横竖表查询
  18. C#实战之CAD二次开发003:插入文字和插入图块
  19. 打击羊毛党团队,腾讯云动真格的了!
  20. B站品牌营销!寻找优质UP主内容共创

热门文章

  1. matlab米氏方程作图,双倒数作图法米氏方程
  2. iOS - OC NSCalendar 日历
  3. ActivityManagerService解读之Activity启动时间闲聊--优雅的优化我们应用的启动时间
  4. html/css-两栏(多栏)布局制作
  5. Android 代码写绚丽的背景
  6. 二次元播放器php源码,Miko动漫视频网站整站源码+二次元动漫网源码+视频弹幕网+自带播放器数据下载...
  7. [经验] 【emWin实战教程V2.0】第8章 emWin5.32模拟器的使用方法
  8. js前端生成GUID (全球唯一标识符)
  9. Mac官网下载安装clion后打不开
  10. vb2005 rnd 函数的应用