当前位置: 首页 > news >正文

北湖区网站建设哪个好成都电商网站

北湖区网站建设哪个好,成都电商网站,企业建站公司哪里找,网站备案的是空间还是域名文章目录 一. 目标二. 前置环境三. websocket通用模板 一. 目标 先有实时数据需要展示. 由于设备量极大且要对设备参数实时记录展示.axios空轮询不太适合. 选择websocket长连接通讯. 使用pinia原因是pinia具备共享数据性质.可以作为消息队列缓存数据,降低渲染压力.同时方便多…

文章目录

    • 一. 目标
    • 二. 前置环境
    • 三. websocket通用模板


一. 目标

先有实时数据需要展示. 由于设备量极大且要对设备参数实时记录展示.axios空轮询不太适合.
选择websocket长连接通讯.

使用pinia原因是pinia具备共享数据性质.可以作为消息队列缓存数据,降低渲染压力.同时方便多个页面或组件获取websocket数据


二. 前置环境

安装pinia
注册pinia不再详细叙述,自行看官方文档.

npm install pinia    

三. websocket通用模板

笔者自行整合网络资源,写了一套较为通用的通信模板. 包含 消息队列缓存, 心跳检测, 断线重连.读者可以自行阅读以下代码调整到业务所需.同时也请大家捉虫,笔者会及时修改.

import {defineStore} from "pinia";
import {ref} from "vue";// 你可以对 `defineStore()` 的返回值进行任意命名,但最好使用 store 的名字,同时以 `use` 开头且以 `Store` 结尾。(比如 `useUserStore`,`useCartStore`,`useProductStore`)
// 第一个参数是你的应用中 Store 的唯一 ID。
export const useWebSocketStore = defineStore('resource', {// 其他配置...state: () => ({// 这里是你的状态socket: null,messageQueue: [],readyState: 0,socketMessage:'1'}),getters: {// 这里是你的 gettersSET_SOCKET: (state: any, socket: any) => {state.socket = socket;},SET_SOCKET_MESSAGE: (state: any, socketMessage: any) => {state.socketMessage = socketMessage;}},actions: {// 这里是你的 actionsconnectWebSocket() {const PING_INTERVAL = 5000; // 心跳间隔,单位为毫秒const heartbeatMessage = {type:0, msg:"ping"}; // 心跳消息const heartbeatMessage2 =  {type:0, msg:"pong", data:['在线设备']}; // 心跳消息const HOST_ADDRESS = 'ws://127.0.0.1:7531'const socket = ref(new WebSocket(HOST_ADDRESS))let checkTask = null// 监听连接事件socket.value.onopen = () => {// 启动心跳检测 确保连接存活 客户端每隔5秒向服务端发送一次心跳消息console.log(heartbeatMessage)checkTask = setInterval(() => {socket.value.send(JSON.stringify(heartbeatMessage))}, PING_INTERVAL)}// 监听消息事件socket.value.onmessage = (event) => {console.log(event.data,"event2")const message = JSON.parse(event.data)if (message.type == WebSocket.CONNECTING) {socket.value.send(JSON.stringify(heartbeatMessage2))return} else {console.log('WebSocket消息: ', message)this.SET_SOCKET_MESSAGE(message)}}// 监听关闭事件 断线重连socket.value.onclose = () => {if(this.socket.readyState === WebSocket.CLOSED) {this.messageQueue.forEach((message) => {this.sendMessage(message)});this.messageQueue = []}// 清除心跳计时器checkTask && clearInterval(checkTask)// 断线重连setTimeout(() => {this.connectWebSocket()},3000)}// 连接错误socket.value.onerror = (event) => {console.log('WebSocket error:', event)}},// 发送消息方法sendMessage(message: string) {this.socket.send(message)}}})
http://www.yayakq.cn/news/801081/

相关文章:

  • 苏州新区网站制作网站建设就业前景2017
  • 保定移动网站建设广州小型企业网站建设
  • 建设银行网站怎么登陆不中国机械工业建设集团有限公司网站
  • 销售平台有哪些优化网络的软件下载
  • 网站建设立项aso推广优化
  • php网站开发淮安招聘网站备案流程阿里云
  • 理论网站建设实施方案外贸网站策划
  • 网站制作哈尔滨长沙网站 建设推广世云网络
  • 网站移动端怎么做的视频号最新动作
  • 合肥网站建设方案维护网站建设专家联系方式
  • 网站建设工作室07fly如何做不同域名跳转同一个网站
  • 平湖网站建设流程html5标签
  • 个人网站免备案吗涟源网站seo
  • 个人做网站怎么盈利seo快速排名上首页
  • 邵阳建设银行网站是多少尚一网常德论坛
  • 做分析报表的网站火车头wordpress免登录发布
  • 网站服务器 内容更新吗logo创意设计
  • 手机网站制作 费怎么做分录推荐企业门户网站建设
  • 商务信息网站优化师的工作内容
  • 北京丰台网站优化房产管理系统
  • 福建省建设工程信息网站番禺制作网站企业
  • 举报网站建设Wordpress代码加超链接
  • 金融网站模板 html下载godaddy 上传网站
  • 电子商务网站平台开发建设方案做微信的网站秀客
  • 怎么做国际网站首页网站怎么建设可以发图评论
  • 公司网站建设费怎么入账临汾网站建设公司
  • 网站建设客户怎么寻找贵州省建设局网站
  • 楚风网站建设工作室给小公司做网站赚钱吗
  • 怎么给自己公司做网站网网站站建建站站
  • 开发网站网页归档wordpress默认主题12