2019-10-16

[Vue+WebSocket 實(shí)現(xiàn)頁(yè)面實(shí)時(shí)刷新長(zhǎng)連接]

*最近vue項(xiàng)目要做數(shù)據(jù)實(shí)時(shí)刷新,折線圖每秒重畫(huà)一次,數(shù)據(jù)每0.5秒刷新一次,說(shuō)白了就是實(shí)時(shí)刷新,因?yàn)閿?shù)據(jù)量較大,用定時(shí)器估計(jì)頁(yè)面停留一會(huì)就會(huì)卡死。。。
與后臺(tái)人員討論過(guò)后決定使用h5新增的WebSocket來(lái)實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)展示,記錄一下過(guò)程以及碰到的問(wèn)題;
注意:頁(yè)面刷新長(zhǎng)連接會(huì)被關(guān)閉,其實(shí)進(jìn)入當(dāng)前頁(yè)面建立長(zhǎng)連接的目的就是頁(yè)面不用F5刷新,所有數(shù)據(jù)自動(dòng)實(shí)時(shí)刷新,如果還是來(lái)回F5大刷頁(yè)面那就沒(méi)有意義了。。。
 ps: 如果實(shí)在有這個(gè)需求的話,網(wǎng)上貌似有實(shí)現(xiàn)刷新頁(yè)面長(zhǎng)連接不斷的方法,請(qǐng)自行百度。。。。

    <template>
        <div>
        </div>
    </template>

    <script>
        export default {
            data() {
                return {
                    websock: null,
                }
            },
        created(){
            //頁(yè)面剛進(jìn)入時(shí)開(kāi)啟長(zhǎng)連接
                this.initWebSocket()
        },
        destroyed: function() {
        //頁(yè)面銷毀時(shí)關(guān)閉長(zhǎng)連接
          this.websocketclose();
        },
        methods: { 
          initWebSocket(){ //初始化weosocket 
           
            const wsuri = process.env.WS_API + "/websocket/threadsocket";//ws地址
            this.websock = new WebSocket(wsuri); 
            this.websocket.onopen = this.websocketonopen;

            this.websocket.onerror = this.websocketonerror;

            this.websock.onmessage = this.websocketonmessage; 
            this.websock.onclose = this.websocketclose;
           }, 

          websocketonopen() {
            console.log("WebSocket連接成功");
          },
          websocketonerror(e) { //錯(cuò)誤
           console.log("WebSocket連接發(fā)生錯(cuò)誤");
          },
          websocketonmessage(e){ //數(shù)據(jù)接收 
            const redata = JSON.parse(e.data);
             //注意:長(zhǎng)連接我們是后臺(tái)直接1秒推送一條數(shù)據(jù), 
                //但是點(diǎn)擊某個(gè)列表時(shí),會(huì)發(fā)送給后臺(tái)一個(gè)標(biāo)識(shí),后臺(tái)根據(jù)此標(biāo)識(shí)返回相對(duì)應(yīng)的數(shù)據(jù),
                //這個(gè)時(shí)候數(shù)據(jù)就只能從一個(gè)出口出,所以讓后臺(tái)加了一個(gè)鍵,例如鍵為1時(shí),是每隔1秒推送的數(shù)據(jù),為2 
                //時(shí)是發(fā)送標(biāo)識(shí)后再推送的數(shù)據(jù),以作區(qū)分
            console.log(redata.value); 
          }, 

          websocketsend(agentData){//數(shù)據(jù)發(fā)送 
            this.websock.send(agentData); 
          }, 

          websocketclose(e){ //關(guān)閉 
            console.log("connection closed (" + e.code + ")"); 
         },
       }, 
      }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 十里桃林 落霞暈染 鋪排等待 等你從遠(yuǎn)方趕來(lái) 遠(yuǎn)遠(yuǎn)的 馬蹄聲疾 你著一襲青衣 騎一匹白馬 從大唐趕來(lái) 半壁黃昏 塌...
    大花貓貓閱讀 613評(píng)論 3 23
  • 營(yíng)銷策劃 營(yíng)銷是在對(duì)企業(yè)內(nèi)部環(huán)境進(jìn)行準(zhǔn)確分析,并有效運(yùn)用經(jīng)營(yíng)資源的基礎(chǔ)上,對(duì)一定時(shí)間內(nèi)的企業(yè)營(yíng)銷活動(dòng)的行為方針、目...
    廣告宣傳創(chuàng)意那些事閱讀 2,287評(píng)論 0 0
  • Part VIII show us the discussion from this group former c...
    lixuelan閱讀 332評(píng)論 0 0
  • 晨鐘KKK 一切從自己的身上找原因,是一種內(nèi)心的自省,是要讓自己活得更真實(shí)些,讓高貴的人獲得本應(yīng)有的自愛(ài)和自...
    果凍_772b閱讀 330評(píng)論 0 0

友情鏈接更多精彩內(nèi)容