欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue通過WebSocket建立長連接的實(shí)現(xiàn)代碼

 更新時(shí)間:2019年11月05日 08:39:05   作者:夕顏非顏  
這篇文章主要介紹了Vue通過WebSocket建立長連接的實(shí)現(xiàn)代碼,文中給出了問題及解決方案,需要的朋友可以參考下

使用場景:

  在項(xiàng)目開發(fā)中,后端需要處理一連串的邏輯,或者等待第三方的數(shù)據(jù)返回來進(jìn)行處理之后在返回給前端,可能時(shí)間會很長,而且前端也不知道后端什么時(shí)候能處理好(時(shí)間長的話會達(dá)到10分鐘左右),如果采用普通的HTTP連接,前后端無法一直保持聯(lián)系,麻煩的時(shí)候可能還需要采用輪詢的機(jī)制,所以使用WebSocket連接效果還是比較好的。

使用時(shí)間:

  在界面加載完之后,建上WebSocket連接,此時(shí)前端還可以發(fā)送普通的HTTP的請求,等到后端處理完之后,通過建立的WebSocket連接返給前端,前端根據(jù)返回的數(shù)據(jù)進(jìn)行對應(yīng)的操作。

代碼展示:

<template>
</template>
<script>
export default {
 data() {
  return{
   // 用戶Id
   userId:'',
   appid:'',
   // 事件類型
   type:'',
   msg:'',
   wsUrl:''
  }  
 },
 methods: {
  //初始化weosocket
  initWebSocket() {
   if (typeof WebSocket === "undefined") {
    alert("您的瀏覽器不支持WebSocket");
    return false;
   }
   const wsuri = 'ws://(后端WebSocket地址)/websocket/' + this.userId + '/' + this.appid // websocket地址
   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;
  },
  //連接成功
  websocketonopen() {
   console.log("WebSocket連接成功");
   // 添加心跳檢測,每30秒發(fā)一次數(shù)據(jù),防止連接斷開(這跟服務(wù)器的設(shè)置有關(guān),如果服務(wù)器沒有設(shè)置每隔多長時(shí)間不發(fā)消息斷開,可以不進(jìn)行心跳設(shè)置)
   let self = this;
   this.timer = setInterval(() => {
    try {
     self.websock.send('test')
     console.log('發(fā)送消息');
    }catch(err){
     console.log('斷開了:' + err);
     self.connection()
    }
   }, 30000)
  },
  //接收后端返回的數(shù)據(jù),可以根據(jù)需要進(jìn)行處理
  websocketonmessage(e) {
   var vm = this;
   let data1Json = JSON.parse(e.data);
   console.log(data1Json);
  },
  //連接建立失敗重連
  websocketonerror(e) {
   console.log(`連接失敗的信息:`, e);
   this.initWebSocket(); // 連接失敗后嘗試重新連接
  },
  //關(guān)閉連接
  websocketclose(e) {
   console.log("斷開連接", e);
  }
 },
 created() {
  if (this.websock) {
   this.websock.close(); // 關(guān)閉websocket連接
  }
  this.initWebSocket();
 },
 destroyed() {
  //頁面銷毀時(shí)關(guān)閉ws連接
  if (this.websock) {
   this.websock.close(); // 關(guān)閉websocket
  }
 }
};
</script>

問題回顧:

  在實(shí)際使用的時(shí)候遇到的問題:有的時(shí)候頁面鏈接還沒有建立上,但是后端已經(jīng)把數(shù)據(jù)都處理好了,這個(gè)時(shí)候推給前端,前端接收不到。

解決方案:

  1)簡單的方法:讓后端延遲幾秒再推

  優(yōu)勢:簡單

  劣勢:降低了性能

  2)優(yōu)化之后的方法:使用Redis保存用戶的登錄狀態(tài),緩存這個(gè)用戶的數(shù)據(jù),等到建立連接之后再推,推完就清空Redis

總結(jié)

以上所述是小編給大家介紹的Vue通過WebSocket建立長連接的實(shí)現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • vue使用Highcharts實(shí)現(xiàn)不同高度的3D環(huán)形圖

    vue使用Highcharts實(shí)現(xiàn)不同高度的3D環(huán)形圖

    這篇文章主要為大家詳細(xì)介紹了vue使用Highcharts實(shí)現(xiàn)不同高度的3D環(huán)形圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 在vue中獲取dom元素內(nèi)容的方法

    在vue中獲取dom元素內(nèi)容的方法

    本篇文章主要介紹了在vue中獲取dom元素內(nèi)容的方法,可以通過給標(biāo)簽加ref屬性,這里整理了詳細(xì)的代碼,有興趣的可以了解一下
    2017-07-07
  • html-webpack-plugin修改頁面的title的方法

    html-webpack-plugin修改頁面的title的方法

    這篇文章主要介紹了html-webpack-plugin修改頁面的title的方法 ,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • vue print.js打印支持Echarts圖表操作

    vue print.js打印支持Echarts圖表操作

    這篇文章主要介紹了vue print.js打印支持Echarts圖表操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue項(xiàng)目在線上服務(wù)器訪問失敗原因分析

    vue項(xiàng)目在線上服務(wù)器訪問失敗原因分析

    這篇文章主要介紹了vue項(xiàng)目在線上服務(wù)器訪問失敗原因分析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Vue拖動截圖功能的簡單實(shí)現(xiàn)方法

    Vue拖動截圖功能的簡單實(shí)現(xiàn)方法

    最近項(xiàng)目上要做一個(gè)車牌識別的功能,就需要做拖動截圖功能了,因?yàn)榍岸问莢ue,所以下面這篇文章主要給大家介紹了關(guān)于Vue拖動截圖功能的簡單實(shí)現(xiàn)方法,需要的朋友可以參考下
    2021-07-07
  • 如何使用 Vue Router 的 meta 屬性實(shí)現(xiàn)多種功能

    如何使用 Vue Router 的 meta 屬性實(shí)現(xiàn)多種功能

    在Vue.js中,Vue Router 提供了強(qiáng)大的路由管理功能,通過meta屬性,我們可以在路由定義中添加自定義元數(shù)據(jù),以實(shí)現(xiàn)訪問控制、頁面標(biāo)題設(shè)置、角色權(quán)限管理、頁面過渡效果,本文將總結(jié)如何使用 meta 屬性來實(shí)現(xiàn)這些常見的功能,感興趣的朋友一起看看吧
    2024-06-06
  • 新版vue-cli模板下本地開發(fā)環(huán)境使用node服務(wù)器跨域的方法

    新版vue-cli模板下本地開發(fā)環(huán)境使用node服務(wù)器跨域的方法

    這篇文章主要介紹了新版vue-cli模板下本地開發(fā)環(huán)境使用node服務(wù)器跨域的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • vue 實(shí)現(xiàn)click同時(shí)傳入事件對象和自定義參數(shù)

    vue 實(shí)現(xiàn)click同時(shí)傳入事件對象和自定義參數(shù)

    這篇文章主要介紹了vue 實(shí)現(xiàn)click同時(shí)傳入事件對象和自定義參數(shù),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Vue如何獲取下拉框中選中的value值和label值

    Vue如何獲取下拉框中選中的value值和label值

    這篇文章主要介紹了Vue如何獲取下拉框中選中的value值和label值問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論