Vue WebSocket简单应用 ws

server/2025/2/8 12:52:07/

webSocket应用

<template><div></div>
</template><script>
import { getToken } from "@/utils/auth";
export default {data() {return {url: "",Socket: null, //socket对象lockReconnect: false, //锁定拒绝重连close: false, //是否关闭timer: null, //定时器//   reconnectNum: 3, //重连次数};},created() {this.connect();},beforeDestroy() {// 页面销毁时关闭连接this.lockReconnect = true;this.close = true;if (this.Socket) {this.Socket.close(); //关闭链接this.Socket = null;}},methods: {// 消息推送WebSocketconnect() {try {if ("WebSocket" in window) {let isPro = process.env.NODE_ENV === "production"; // 正式环境let urlHead = "ws://";if (location.protocol === "https:") {urlHead = "wss://";}this.url = isPro? urlHead +location.host +"/websocket/alarm/": "ws://10.19.11.111:11111/websocket/alarm/";// process.env.VUE_APP_WEVSOCKET_PATH;this.Socket = new WebSocket(this.url + getToken());}console.log("正在连接...");this.initEventHandle();} catch (err) {console.log(err, "失败");}},// 监听连接状态+取数据initEventHandle() {this.Socket.onclose = (e) => {this.clearTimer(); //清除定时器this.reconnect(); //定时重连console.log(e.target, "连接关闭!" + new Date().toLocaleString());};this.Socket.onerror = (e) => {this.reconnect(); //定时重连console.log(e.target, "连接错误!");};this.Socket.onopen = (e) => {this.heartCheck(); //心跳检测重置console.log(e.target, "连接成功!" + new Date().toLocaleString());};// 接收数据this.Socket.onmessage = (e) => {if (e.data != "pong") {let data = JSON.parse(e.data);console.log("数据转换", data);}};},// 清除定时器clearTimer() {clearInterval(this.timer);this.timer = null;},// 断开然后定时重连reconnect() {if (this.lockReconnect || this.close) return;//   if (this.reconnectNum >= 3) return; //最多重连三次this.lockReconnect = true;setTimeout(() => {//没连接上会一直重连,设置延迟避免请求过多// this.reconnectNum++;this.connect();this.lockReconnect = false;}, 500);},// 发送心跳检测heartCheck() {this.clearTimer();this.timer = setInterval(() => {// 三十秒钟发一次心跳包this.Socket.send("ping");// console.log("--ping--");}, 30000);},},
};
</script>
<style scoped></style>

http://www.ppmy.cn/server/165957.html

相关文章

基于java的物资综合管理系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

HarmonyOS:查询设备信息

说明 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 部分参数返回值为default的&#xff0c;会在正式发布的版本中配置。 本模块接口返回设备常量信息&#xff0c;建议应用只调用一次&#xff0c;不需要频繁调用…

树莓派5添加摄像头 在C++下调用opencv

由于树莓派5 os系统升级,正常libcamera创建对象每次失败。 改如下方法成功。 1 创建管道 rpicam-vid -t 0 --codec mjpeg -o udp://127.0.0.1:8554 > /dev/null 2>&1 2 opencv从管道里读取 #include <opencv2/opencv.hpp> #include <iostream>int mai…

Docker Desktop安装kubernetes时一直在Starting:Kubernetes failed to start

原因&#xff1a;由于墙的问题&#xff0c;导致拉取国外的K8s镜像失败 解决&#xff1a; 下载 k8s-for-docker-desktop 选中自己的kubernetes 版本 下载zip包 PowerShell运行load_images.ps1文件 重启docker kubernetes运行成功

day 41 51中断系统以及定时器

1.中断 1.寄存器&#xff1a;具有固定地址值的内存空间&#xff0c;对于soc来说具有特殊的功能的变量。 2.中断&#xff1a;当cpu处理事件时&#xff0c;外界发生紧急请求&#xff0c;要求cpu暂停当前工作去处理这个紧急事件&#xff0c;处理完之后回到原来中断的地方&#xf…

小白如何制作精致 PPT?免费 Office 插件来帮忙

微软 Office Plus 是由微软中国团队精心打造的免费 Word、Excel 和 PPT 模板素材网站。在这里&#xff0c;您可以轻松获取各类高质量的模板&#xff0c;以及一款微软官方 PPT 插件。这款插件能够将 Office Plus 的丰富模板直接内嵌到 PPT 中&#xff0c;极大地提升了制作演示文…

Scala语言的人工智能

Scala语言的人工智能探索 引言 在现代软件开发的领域中&#xff0c;人工智能&#xff08;AI&#xff09;正在以惊人的速度发展和扩展。无论是在自然语言处理、计算机视觉还是自动化决策系统&#xff0c;人工智能技术都在不断革新。而在众多编程语言中&#xff0c;Scala以其独…

Linux学习笔记17---UART 串口通信实验

不管是单片机开发还是嵌入式 Linux 开发&#xff0c;串口都是最常用到的外设。可以通过串口将开发板与电脑相连&#xff0c;然后在电脑上通过串口调试助手来调试程序。还有很多的模块&#xff0c;比如蓝牙、 GPS、 GPRS 等都使用的串口来与主控进行通信的&#xff0c;在嵌入式…