vue3的websocket连接

server/2024/10/22 11:38:39/

直接上代码

分方法代码-util.ts中

let websock: any = null;
let global_callback: any = null;
//创建多个WebSocket实例,没想到怎么优化,先这么写
function createWebSocket(callback: any, url: any) {// || websock.readyState === WebSocket.CLOSEDif (websock == null || typeof websock !== WebSocket) {initWebSocket(callback, url);}
}
function initWebSocket(callback: any, url: any) {global_callback = callback;// 初始化websocketwebsock = new WebSocket(url);websock.onmessage = function (e: any) {websocketonmessage(e, "0");};websock.onclose = function (e: any) {websocketclose(e);};// 连接发生错误的回调方法websock.onerror = function () {console.log("WebSocket连接发生错误");};
}// 实际调用的方法
function sendSock(agentData: any) {if (websock.readyState === websock.OPEN) {// 若是ws开启状态websocketsend(agentData);} else if (websock.readyState === websock.CONNECTING) {// 若是 正在开启状态,则等待1s后重新调用setTimeout(function () {sendSock(agentData);}, 1000);} else {// 若未开启 ,则等待1s后重新调用setTimeout(function () {sendSock(agentData);}, 1000);}
}// 数据接收 type是当有多个websocket接受数据的时候 能区分哪个对应哪个
function websocketonmessage(msg: any, type) {let result: any = null;result = msg.data;switch (type) {case "0":global_callback(result);break;default:break;}
}
// 关闭链接
function closeSock() {if (websock) {websock.close();}
}// 关闭
function websocketclose(e: any) {console.log("connection closed (" + e.code + ")");
}export { sendSock, createWebSocket, closeSock };

页面使用

onMounted(() => {// 引用之前暴露出来的创建  WebSocketUrl1 是链接地址eg:ws://192.168.0.0:8080/websocket/page1createWebSocket((msg: any) => {// console.log("websocket1的回调函数收到服务器信息:" + msg);// 当接收到消息的时候 调用的方法mapFlightPositionFun(msg);}, WebSocketUrl1);
}
onBeforeUnmount(() => {closeSock();
}const mapFlightPositionFun = Data => {//  当Data开始传递数据的时候 在里面调用if (Data !== "连接成功") {}
}

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

相关文章

王学岗鸿蒙开发(北向)——————(十三)音乐播放器

AudioRenderer适合录音 AVPlayer:简单的本地单曲播放 MP3文件放置的地方 import media from ohos.multimedia.media import common from ohos.app.ability.common; Entry Component struct Index {//第1步:avPlayer:media.AVPlayer nullasync onPageShow(){//第…

力扣76.最小覆盖子串

力扣76.最小覆盖子串 用哈希表记录每个字母出现次数 枚举右端点 判断是否能全覆盖如果可以 并且更短 就更新 j 缩小区间再判断 class Solution {bool is_covered(int cnt_s[], int cnt_t[]) {for (int i A; i < Z; i) {if (cnt_s[i] < cnt_t[i]) {return false;}}fo…

计算机网络 期末复习(谢希仁版本)第5章

**屏蔽作用&#xff1a;**运输层向高层用户屏蔽了下面网络核心的细节&#xff08;如网络拓扑、所采用的路由选择协议等&#xff09;&#xff0c;使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。 10. 端口用一个 16 位端口号进行标志&#xff0c;允许…

2024-06-06 问AI: 在深度学习中,什么是欧几里德长度?

文心一言 在深度学习中&#xff0c;欧几里德长度&#xff08;也称为欧几里得距离或欧氏距离&#xff09;是一个常用的概念&#xff0c;它衡量的是在多维空间中两个点之间的真实距离&#xff0c;或者说是向量的自然长度&#xff08;即该点到原点的距离&#xff09;。以下是关于…

长期出汗,肾合失衡的信号 快来调整吧

设想一下&#xff0c;我们的身体就像是一幅绚丽多彩的油画&#xff0c;每一个细胞、每一个组织都是画笔下的色彩&#xff0c;共同勾勒出生命的图景&#xff0c;描绘着我们的过往与期待。而汗水&#xff0c;就如同画布上的润色剂&#xff0c;它流淌在我们的体表&#xff0c;见证…

14_1 Linux podman容器技术与数据库基础

14_1 Linux podman容器技术与数据库基础 文章目录 14_1 Linux podman容器技术与数据库基础[toc]1. 源码编译安装1.1 源码编译安装的步骤1.2 源码编译安装的优点1.3 实例 2. 数据同步2.1 rsync用法2.2 本地同步2.3 远程同步2.4 实时同步2.5 监控目录变化的工具inotifywait 3. 数…

OCP前景咋样,工资高吗?

Oracle数据库作为企业级应用的基石&#xff0c;其专业人才一直是市场上的热门需求。 OCP认证&#xff0c;作为Oracle公司颁发的专业证书&#xff0c;OCP认证的持有者通常被视为具备了高级数据库管理、配置、备份、恢复、调优以及SQL编程等关键技能的专业人士。 这些技能在当今…

15. 《C语言》——【如何动态内存开辟】

亲爱的读者&#xff0c;大家好&#xff01;我是一名正在学习编程的高校生。在这个博客里&#xff0c;我将和大家一起探讨编程技巧、分享实用工具&#xff0c;并交流学习心得。希望通过我的博客&#xff0c;你能学到有用的知识&#xff0c;提高自己的技能&#xff0c;成为一名优…