IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 基于vue的前端socket处理模板 -> 正文阅读

[网络协议]基于vue的前端socket处理模板

?整体思路如下:

1、初始化注册webSocket事件:

//初始化方法,先注册websoct事件 
initWebsocket() {
      const wsuri = “wss://xxxxx.xxxxxx.cn/ws”;
      this.websock = new WebSocket(wsuri);
      this.websock.onopen = this.websocketonopen;        //定义建立连接方法
      this.websock.onmessage = this.websocketonmessage;  //定义接收数据方法
      this.websock.onerror = this.websocketonerror;      //定义建立连接失败方法
      this.websock.onclose = this.websocketclose;        //定义连接关闭方法
 }

2、建立连接 (this.websock.onopen)

// 连接建立之后执行send方法发送数据
websocketonopen() {
   //成功建立连接之后 ,开启心跳机制发送数据
   this.heartCheck();
},

3、 连接建立失败,执行重连机制

 //连接建立失败,执行重连机制
 websocketonerror() {
   this.initWebSocket();
 },

4、 关闭webSocket

// 关闭websocket
websocketclose(e) {
   this.websock.close();
},

?5、接收数据

 // 数据接收
    websocketonmessage(e) {
       //以下为具体业务逻辑处理,仅供参考
      let newMd5 = md5(e.data);
      if (newMd5 === this.nopitData) {
      } else {
        this.nopitData = newMd5;
        const recData = JSON.parse(e.data);
        const reData = recData.data;
        if (recData.routeId === "response") {
          if (this.initializationState) {
            let actions = {
              routeId: "subscribe",
              data: ["alarm", "doorRecord",'parkRecord'],
              userId: sessionStorage.getItem("userCode"),
              regionId: this.areaCode
            };
            this.websocketsend(JSON.stringify(actions));
            this.initializationState = false;
          }
        }else{
           this.onCarMessage(recData,recData.routeId)
        }
      }
    },

6、心跳机制

?

heartCheck() {
      let that = this;
      let data = {
        routeId: "connect",
        userId: sessionStorage.getItem("userCode"),
        regionId: this.areaCode
      };
      if (this.websock && this.websock.readyState === 1) {
        this.websock.send(JSON.stringify(data));
      }
      if (heartbeat) clearTimeout(heartbeat);
      heartbeat = setTimeout(() => {
        this.initializationState=true;
        that.heartCheck();
      }, 30000);
    },

Socket.readyState的状态如下:

  • 0 - 表示连接尚未建立。

  • 1 - 表示连接已建立,可以进行通信。

  • 2 - 表示连接正在进行关闭。

  • 3 - 表示连接已经关闭或者连接不能打开

webSocket的心跳以及重连机制

? ? 在使用websocket的过程中,有时候会遇到网络断开的情况,但是在网络断开的时候服务器端并没有触发onclose的事件。这样会有:服务器会继续向客户端发送多余的链接,并且这些数据还会丢失。所以就需要一种机制来检测客户端和服务端是否处于正常的链接状态。因此就有了websocket的心跳了。还有心跳,说明还活着,没有心跳说明已经挂掉了。?

1. 为什么叫心跳包呢?
它就像心跳一样每隔固定的时间发一次,来告诉服务器,我还活着。

2. 心跳机制是?
心跳机制是每隔一段时间会向服务器发送一个数据包,告诉服务器自己还活着,同时客户端会确认服务器端是否还活着,如果还活着的话,就会回传一个数据包给客户端来确定服务器端也还活着,否则的话,有可能是网络断开连接了。需要重连~

?

?

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 19:10:26  更:2021-09-11 19:12:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:47:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码