vue使用 封裝websocket心跳包

来源:https://www.cnblogs.com/Zhushaoyu/archive/2019/10/25/11739630.html
-Advertisement-
Play Games

這套代碼可以拿過去直接用 一些註意我會在下麵代碼中加上註釋: 謝謝支持 核心代碼 websocket方法調用 此代碼為本博主原創,轉載請註明出處(支持原創! 謝謝~) 湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字 ...


這套代碼可以拿過去直接用 一些註意我會在下麵代碼中加上註釋:

謝謝支持

核心代碼

 1 //這裡需要引入vuex
 2 import store from './store';
 3 
 4 let wsConnection = {
 5   $ws: null,
 6   lockReturn: false,
 7   timeout: 60 * 1000 * 5,
 8   timeoutObj: null,
 9   timeoutNum: null,
10   serverTimeoutObj: null,
11   //初始化webSocket長連接
12   initWebSocket: function () {
13     let corpId = localStorage.getItem('corpId');
14     let name = localStorage.getItem('username');
15     this.$ws = new WebSocket(wsurl);//寫入地址 這裡的地址可以在initWebSocket方法加入參數
16     this.$ws.onopen = this.wsOpen;
17     this.$ws.onclose = this.wsClose;
18     this.$ws.onmessage = this.wsMsg;
19     this.$ws.onerror = this.wsError;
20   },
21   //打開websocket
22   wsOpen: function (e) {
23     //開始websocket心跳
24     wsConnection.startWsHeartbeat();
25     console.log('ws success')
26   },
27   wsClose: function (e) {
28     console.log(e, 'ws close')
29   },
30   wsMsg: function (msg) {
31     //每次接收到服務端消息後 重置websocket心跳
32     wsConnection.resetHeartbeat();
33     //服務端發送來的消息存到vuex
34     store.commit('web_socket_msg', msg)
35   },
36   wsError: function (err) {
37     console.log(err, 'ws error');
38     wsConnection.reconnect()
39   },
40   //重啟websocket
41   reconnect: function () {
42     let _this = this;
43     if (_this.lockReturn) {
44       return;
45     }
46     _this.lockReturn = true;
47     _this.timeoutNum && clearTimeout(_this.timeoutNum);
48     _this.timeoutNum = setTimeout(function () {
49       _this.initWebSocket();
50       _this.lockReturn = false;
51     }, 3000);
52   },
53   startWsHeartbeat: function () {
54     let _this = this;
55     _this.timeoutObj && clearTimeout(_this.timeoutObj);
56     _this.serverTimeoutObj && clearTimeout(_this.serverTimeoutObj);
57     _this.timeoutObj = setInterval(function () {
58       //判斷websocket當前狀態
59       if (_this.$ws.readyState != 1) {
60         _this.reconnect()
61       }
62     }, _this.timeout);
63   },
64   //重置websocket心跳
65   resetHeartbeat: function () {
66     let _this = this;
67     clearTimeout(_this.timeoutObj);
68     clearTimeout(_this.serverTimeoutObj);
69     _this.startWsHeartbeat()
70   }
71 };
72 
73 //拋出websocket對象
74 export default wsConnection

websocket方法調用

 

 1 //在main.js引入
 2 import wsConnection from './vuex/wsStore'
 3 //掛載vue原型鏈
 4 Vue.prototype.$setWs = wsConnection;
 5 
 6 //在使用地方調用
 7  $this.$setWs.initWebSocket();
 8 
 9 //在需要使用服務端推送過來的消息時
10 //在computed方法聲明
11 getWsMsg() {
12    //在核心代碼接收到的服務端信息存儲到vuex的屬性
13     return this.$store.state.webSocketMsg
14 }
15 //在watch方法   監聽  getWsMsg  
16  getWsMsg: function (data, val) {
17    console.log(data);
18    //.......
19 }      

此代碼為本博主原創,轉載請註明出處(支持原創! 謝謝~)

 


湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~

湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~

湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~

湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~

湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~湊字數~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Oracle 11.2.0.4單實例打PSU,OJVM PSU補丁快速參考 寫在前面: · 1.Oracel打每個補丁的操作有時存在差異,所以不管多熟悉,都應該在打任何補丁之前閱讀新補丁中附帶的readme。 · 2.Oracle每季度都會更新一個最新的PSU,本文最新指的是當前最新(即0719發佈 ...
  • mysqldump -u root -p 要備份的資料庫名> /home/mysql/backup/db/back/資料庫名.sql ...
  • 集合操作常用的集合操作主要有三種:UNION(聯合集)、INTERSECT(交叉集)、EXCEPT(求差集)。以上三種集合的操作都是直接作用在兩個或者多個 SQL 查詢語句之間,將所有的元組按照特定的要求篩選後拼接起來。SQL 查詢後實際上是得到一個新的數據表的形式,因此所作用的數據表之間必須定義相 ...
  • 摘要: 多條紀錄中,幾個欄位相同,但是其中一個或者多個欄位不同,則去該欄位最大(這裡只有一個不同) 源數據: 目的是移除:在同一天中只能存在一天數據,則取審核日期最大,資料庫腳本如下: 得到的目標結果如下: 總結:該方法使用使用函數和分組;也可以使用分組聚合函數group_concat; 前者簡單, ...
  • https://www.jianshu.com/p/ec2f65523cc4 ...
  • 很簡單的走馬燈效果 關註公眾號 WEB前端大澳 領取資料 ...
  • HTML語法規範 1. 語法規範概述 1. HTML標簽是由尖括弧包圍的關鍵詞,例如 2. HTML標簽通常是成對出現的,例如 和 ,我們成為雙標簽。標簽對中的第一個標簽是開始標簽,第二個標簽是結束標簽。 3. 有些特殊的標簽必須是單個標簽,例如 ,我們稱之為單標簽 2. 標簽關係 包含關係 ~~~ ...
  • // 折線圖let lineChart = echarts.init(document.getElementById('lineChart'));let lineOption = { title: { text: '數據接入增量趨勢', textStyle: { color: '#cccccc', ... ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...