Vue+WebSocket頁面實時刷新長連接的實現(xiàn)
最近vue項目要做數(shù)據(jù)實時刷新,折線圖每秒重畫一次,數(shù)據(jù)每0.5秒刷新一次,說白了就是實時刷新,因為數(shù)據(jù)量較大,用定時器估計頁面停留一會就會卡死。。。
與后臺人員討論過后決定使用h5新增的WebSocket來實現(xiàn)數(shù)據(jù)實時展示,記錄一下過程以及碰到的問題;
注意:頁面刷新長連接會被關(guān)閉,其實進入當(dāng)前頁面建立長連接的目的就是頁面不用F5刷新,所有數(shù)據(jù)自動實時刷新,如果還是來回F5大刷頁面那就沒有意義了。。。
ps: 如果實在有這個需求的話,網(wǎng)上貌似有實現(xiàn)刷新頁面長連接不斷的方法,請自行百度。。。。
<template> <div> </div></template><script> export default {data() { return {websock: null, }},created(){ //頁面剛進入時開啟長連接 this.initWebSocket() },destroyed: function() {//頁面銷毀時關(guān)閉長連接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) { //錯誤 console.log('WebSocket連接發(fā)生錯誤');},websocketonmessage(e){ //數(shù)據(jù)接收 const redata = JSON.parse(e.data); //注意:長連接我們是后臺直接1秒推送一條數(shù)據(jù), //但是點擊某個列表時,會發(fā)送給后臺一個標(biāo)識,后臺根據(jù)此標(biāo)識返回相對應(yīng)的數(shù)據(jù), //這個時候數(shù)據(jù)就只能從一個出口出,所以讓后臺加了一個鍵,例如鍵為1時,是每隔1秒推送的數(shù)據(jù),為2時是發(fā)送標(biāo)識后再推送的數(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 + ')'); }, }, } </script>
到此這篇關(guān)于Vue+WebSocket頁面實時刷新長連接的實現(xiàn)的文章就介紹到這了,更多相關(guān)Vue+WebSocket實時刷新長連接內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. msxml3.dll 錯誤 800c0019 系統(tǒng)錯誤:-2146697191解決方法2. ASP常用日期格式化函數(shù) FormatDate()3. 解析原生JS getComputedStyle4. 輕松學(xué)習(xí)XML教程5. HTML DOM setInterval和clearInterval方法案例詳解6. 阿里前端開發(fā)中的規(guī)范要求7. xpath簡介_動力節(jié)點Java學(xué)院整理8. css代碼優(yōu)化的12個技巧9. jsp實現(xiàn)登錄驗證的過濾器10. jsp+servlet簡單實現(xiàn)上傳文件功能(保存目錄改進)
