当前位置:首页 » 《休闲阅读》 » 正文

前端大屏数据实时更新

25 人参与  2024年03月28日 19:15  分类 : 《休闲阅读》  评论

点击全文阅读


1. 方案一:

在页面中使用 setInterval 每隔几秒去获取一下数据。伪代码如下:

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 纯前端无法独立完成,需要后台 配合提供相应的接口。

3. 方案三:

使用SSE(Server-Sent Events), 纯前端无法独立完成,需要后台 配合提供相应的接口。

SSE优点

SSE 使用 HTTP 协议,现有的服务器软件都支持。WebSocket 是一个独立协议。SSE 属于轻量级,使用简单;WebSocket 协议相对复杂。SSE 默认支持断线重连,WebSocket 需要自己实现。SSE 一般只用来传送文本,二进制数据需要编码后传送,WebSocket 默认支持传送二进制数据。SSE 支持自定义发送的消息类型。

实现代码如下:

客户端:

created(){    this.getDataList()},methods: {   getDataList() {      var _this = this      // 使用node来启一个服务      const source = new EventSource('http://localhost:9528/getlist')      // readyState      // 0 可能是第一次链接,也可能是断开链接了又重新链接,客户端和服务器正在链接,还没有链接上      // 1 客户端和服务器链接上了,就可以接受服务器数据      // 2 彻底断开链接并且不在重连      console.log('source==>', source)      console.log(EventSource.CONNECTING) // 0      console.log(EventSource.OPEN) // 1      console.log(EventSource.CLOSED) // 2      // open事件是 客户端和服务器链接上触发      source.onopen = function(event) {        console.log('onopen===>', event)      }      // message 事件 是服务器向客户度发送消息时触发      source.onmessage = function(event) {        console.log('onmessage===>', event)        // 服务端发送的数据 event.data        _this.orderList = JSON.parse(event.data)      }      // 是服务器和客户端 链接出错时触发      source.onerror = function(event) {        console.log('onerror===>', event)      }    }}

服务端:

使用node简单的启动一个服务:

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);  // 发送 data 由 message组成 \n\n  // mesage id,data,retry,event  // data:数据  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("服务已启动。。。端口9528");})

参考文章


点击全文阅读


本文链接:http://zhangshiyu.com/post/87384.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1