vue使用 封裝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 () {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 }      

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

 


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

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

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM