国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端大屏數(shù)據(jù)實時更新

這篇具有很好參考價值的文章主要介紹了前端大屏數(shù)據(jù)實時更新。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. 方案一:

在頁面中使用?setInterval?每隔幾秒去獲取一下數(shù)據(jù)。偽代碼如下:

created() {
    this.getLatestData()
},
destroyed(){
    clearInterval(this.timerId)
}
methods: {
 getLatestData() {
     this.timerId = setInterval(async() => {
        const res = await getLatestDataApi()
        const { data } = res
        this.list = data
      }, 1000 * 5)
    }
}

一般不建議這樣使用,因為會給頁面造成性能問題。

2. 方案二:

使用?websocket
如果使用 websocket 純前端無法獨立完成,需要后臺?配合提供相應(yīng)的接口。

3. 方案三:

使用SSE(Server-Sent Events), 純前端無法獨立完成,需要后臺?配合提供相應(yīng)的接口。

SSE優(yōu)點

  • SSE 使用 HTTP 協(xié)議,現(xiàn)有的服務(wù)器軟件都支持。WebSocket 是一個獨立協(xié)議。
  • SSE 屬于輕量級,使用簡單;WebSocket 協(xié)議相對復(fù)雜。
  • SSE 默認(rèn)支持?jǐn)嗑€重連,WebSocket 需要自己實現(xiàn)。
  • SSE 一般只用來傳送文本,二進(jìn)制數(shù)據(jù)需要編碼后傳送,WebSocket 默認(rèn)支持傳送二進(jìn)制數(shù)據(jù)。
  • SSE 支持自定義發(fā)送的消息類型。

實現(xiàn)代碼如下:

客戶端:

created(){
    this.getDataList()
},
methods: {
   getDataList() {
      var _this = this
      // 使用node來啟一個服務(wù)
      const source = new EventSource('http://localhost:9528/getlist')
      // readyState
      // 0 可能是第一次鏈接,也可能是斷開鏈接了又重新鏈接,客戶端和服務(wù)器正在鏈接,還沒有鏈接上
      // 1 客戶端和服務(wù)器鏈接上了,就可以接受服務(wù)器數(shù)據(jù)
      // 2 徹底斷開鏈接并且不在重連
      console.log('source==>', source)
      console.log(EventSource.CONNECTING) // 0
      console.log(EventSource.OPEN) // 1
      console.log(EventSource.CLOSED) // 2

      // open事件是 客戶端和服務(wù)器鏈接上觸發(fā)
      source.onopen = function(event) {
        console.log('onopen===>', event)
      }
      // message 事件 是服務(wù)器向客戶度發(fā)送消息時觸發(fā)
      source.onmessage = function(event) {
        console.log('onmessage===>', event)
        // 服務(wù)端發(fā)送的數(shù)據(jù) event.data
        _this.orderList = JSON.parse(event.data)
      }
      // 是服務(wù)器和客戶端 鏈接出錯時觸發(fā)
      source.onerror = function(event) {
        console.log('onerror===>', event)
      }
    }
}

服務(wù)端:

使用node簡單的啟動一個服務(wù):

mockData.js

// const orderData = [
//   {
//     date: '2022-9-27',
//     order: 50,
//     returnOrder: 2
//   },
//   {
//     date: '2022-9-27',
//     order: 50,
//     returnOrder: 2
//   }
// ]

// console.log(orderData)

 function getOrderList() {
  const orderData = []
  for (let i = 1; i <= 30; i++) {
    orderData.push({
      date: `2022-09-${i > 9 ? i : '0' + i}`,
      order: randomLowerBUpper(50, 100),
      returnOrder: randomLowerBUpper(5, 10)
    })
  }
  return orderData
}

function randomLowerBUpper(lower, upper) {
  const choice = upper - lower + 1
  return Math.floor(Math.random() * choice + lower)
}

module.exports = getOrderList

index.js

const http = require('http');
const getOrderList = require('./mockData.js')

const server = http.createServer((req,res)=>{
  const url = req.url
  console.log(url);
  // 發(fā)送 data 由 message組成 \n\n
  // mesage id,data,retry,event
  // data:數(shù)據(jù)
  if(url=="/getlist"){
    res.writeHead(200, {
      "Content-Type":"text/event-stream",
      "Cache-Control":"no-cache",
      "Connection":"keep-alive",
      "Access-Control-Allow-Origin": '*', // 解決跨域
    });
    res.write("retry: 10000\n");
    interval = setInterval(function () {
      res.write("data: " + JSON.stringify(getOrderList()) + "\n\n");
    }, 1000*5);

    req.connection.addListener("close", function () {
      clearInterval(interval);
    }, false);
  }
  // res.end()
})

server.listen(9528,()=>{
  console.log("服務(wù)已啟動。。。端口9528");
})

參考文章文章來源地址http://www.zghlxwxcb.cn/news/detail-743204.html

到了這里,關(guān)于前端大屏數(shù)據(jù)實時更新的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 實時數(shù)據(jù)流無憂:用 SpringBoot 和 SSE 打造動態(tài)前端更新的終極指南

    你知道什么是開發(fā)者的夢魘嗎?慢!慢!慢!在一個需要實時數(shù)據(jù)更新的應(yīng)用中,如果數(shù)據(jù)像烏龜一樣慢吞吞地爬行,那用戶體驗就會像坐過山車一樣直線下降。所以今天,我們要化身為數(shù)據(jù)傳輸?shù)某売⑿郏?SpringBoot 和 SSE(服務(wù)器發(fā)送事件)打造一個超酷、超快、而且超

    2024年02月02日
    瀏覽(24)
  • Vscode常用插件及設(shè)置(前端版,實時更新ing

    Vscode常用插件及設(shè)置(前端版,實時更新ing

    寫完代碼后鼠標(biāo)右擊將代碼在瀏覽器中運行 漢化Vscode html、css、js、less圖標(biāo)顯示 代碼塊寫完后使用Live Server,每次修改代碼Ctrl+S后瀏覽器無需再刷新即可跟著變化, 與win+左鍵或win+右鍵搭配爽歪歪,直接效率起飛!??! 外聯(lián)樣式提示插件 錯誤提示信息 將.less文件生成一個.

    2024年02月02日
    瀏覽(27)
  • 【前端學(xué)習(xí)記錄】vue中使用el-upload組件時,上傳文件進(jìn)度條沒有實時更新

    問題背景 今天在項目中遇到一個問題,使用el-upload組件時,上傳文件進(jìn)度條沒有實時更新,需要手動點擊一下才會更新。 原理及可嘗試方案 el-upload 組件默認(rèn)的進(jìn)度條是通過 Ajax 請求上傳文件,并且進(jìn)度條通過監(jiān)聽 xhr.upload 的 progress 事件來實時更新。但是,有些瀏覽器在處

    2024年02月01日
    瀏覽(23)
  • Python如何隨數(shù)據(jù)更新實時畫圖?Python實時動態(tài)繪圖

    在數(shù)據(jù)分析和可視化場景中,我們常常需要實現(xiàn)實時動態(tài)圖表,比如每分鐘讀取數(shù)據(jù)庫新的記錄,及時更新圖表顯示最新數(shù)據(jù),而不是靜態(tài)顯示某個時間點的數(shù)據(jù)。本文將介紹使用Python matploblib庫的animation功能實現(xiàn)實時動態(tài)繪圖的方法。 問題背景 我們有一個Excel表,其中記錄

    2024年02月12日
    瀏覽(25)
  • Java面試基礎(chǔ)|數(shù)據(jù)結(jié)構(gòu) -實時更新

    Java面試基礎(chǔ)|數(shù)據(jù)結(jié)構(gòu) -實時更新

    1.HashMap和ConcurrentHashMap介紹 核心是一個Node數(shù)組, 數(shù)據(jù)結(jié)構(gòu)與hashMap相似 使用CAS操作來實現(xiàn)無鎖的更新,提高了并發(fā)性。當(dāng)更新節(jié)點時,它會使用CAS來替換節(jié)點的值或鏈接,如果CAS失敗,表明有其他線程也在進(jìn)行修改,當(dāng)前線程可以重試或鎖定節(jié)點 對于復(fù)雜的結(jié)構(gòu)修改操作

    2024年01月17日
    瀏覽(22)
  • Rust采集天氣預(yù)報信息并實時更新數(shù)據(jù)

    Rust采集天氣預(yù)報信息并實時更新數(shù)據(jù)

    最近天氣溫度時高時低,雖說這是大自然的力量人無法抗拒,不能改變那么我們就做預(yù)防工作。今天我將用Rust寫一個爬蟲程序?qū)崿F(xiàn)電腦桌面實時更新天氣情況,這個是一個底層邏輯,需要多方面配合,不僅要有完善的代碼還有爬蟲IP試試更新才能保證數(shù)據(jù)最完整最新。 這是一

    2024年01月19日
    瀏覽(22)
  • vue中組件動態(tài)傳值,實現(xiàn)數(shù)據(jù)實時更新

    在一些項目需求中需要父組件向子組件動態(tài)傳值,比如父組件動態(tài)通過axios獲取數(shù)據(jù),然后傳給子組件,子組件根據(jù)拿到的數(shù)據(jù)進(jìn)行展示。 props傳值的時候,只會首次傳遞綁定的值,不會變化 方式1 利用watch監(jiān)聽props變化 方式2 利用ref獲取子組件,調(diào)用子組件的方法將值傳遞過

    2024年02月16日
    瀏覽(29)
  • 小程序彈幕自動滾動實時更新數(shù)據(jù)功能

    小程序彈幕自動滾動實時更新數(shù)據(jù)功能

    需求 最近遇到的需求,寫一個彈幕功能 大致就是實現(xiàn)這樣的效果 彈幕輪播,上下兩排,一共30個彈幕,30個輪播完畢之后獲取新的彈幕數(shù)據(jù) 實現(xiàn)方法 ?目前我想到的實現(xiàn)方法是用css的動畫來實現(xiàn)這個功能 布局層級 給barrageBox盒子一個相對定位 給barrageList絕對定位 先將list盒子

    2024年01月20日
    瀏覽(24)
  • WPF綁定數(shù)據(jù),增刪改后實時更新TreeView/ListView

    WPF綁定數(shù)據(jù),增刪改后實時更新TreeView/ListView

    WPF的界面的確好看,也引入了很多新功能,和winform相比更先進(jìn)更強(qiáng)大......那么狗兒蛋,代價是什么? 代價就是WPF學(xué)起來比較費力。 數(shù)據(jù)綁定是WPF的特色之一,可以省去寫代碼更新UI界面的工作。這次打算做一個管理數(shù)據(jù)的小軟件,自然的我也打算在界面上弄個TreeView,然后把

    2024年02月09日
    瀏覽(22)
  • Android:實時更新時間

    心想著也就是更新精確到分鐘,不用精確到秒,定時器就沒有必要,系統(tǒng)是有廣播 Intent.ACTION_TIME_TICK 可以直接用 動態(tài)注冊廣播 主方法里面調(diào)用一下 接收廣播并處理 精確到時:分的方法?

    2024年02月15日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包