Vue3中的WebSocket通讯实现

ops/2024/10/18 14:18:14/

Vue3与WebSocket结合能够很好地满足实时通讯的需求。通过合理设计和管理WebSocket连接的生命周期,以及实现必要的重连逻辑和心跳检测机制,可以构建出响应迅速且稳定的实时应用。

在现代Web应用中,实时数据交互和推送是一个非常关键的功能。WebSocket作为一种在单个TCP连接上进行全双工通信的协议,使得服务器与客户端之间的数据传输更加高效、实时。本文将详细介绍如何在Vue3框架下利用WebSocket实现双向实时通讯。

WebSocket简介

WebSocket允许服务端主动向客户端发送数据,无需客户端发起请求,从而实现了低延迟、高效率的数据交换。它通过HTTP升级协议握手来建立持久性的连接,并使用帧(frame)的形式传输数据。

Vue3中实现WebSocket通讯

<template><div><button @click="connect">Connect</button><button @click="sendMessage" :disabled="!connected">Send Message</button><button @click="disconnect" :disabled="!connected">Disconnect</button></div>
</template><script setup>
import { ref,onMounted,onUnmounted } from 'vue';const ws = ref(null);
const connected = ref(false);onMounted(() => {connect();
});
onUnmounted(() => {disconnect();
})
const connect = () => {ws.value = new WebSocket('ws://192.168.16.90:8080/websocket/test');ws.value.onopen = () => {connected.value = true;};ws.value.onclose = () => {connected.value = false;};ws.value.onmessage = (event) => {// 处理收到的消息数据console.log('收到消息:', event.data);}ws.value.onerror = (error) => {console.error('Error:', error);};
};const sendMessage = () => {if (ws.value && ws.value.readyState === WebSocket.OPEN) {ws.value.send('123');}
};const disconnect = () => {if (ws.value) {ws.value.close();ws.value = null;}
};
</script>

上述代码展示了如何在Vue3组件内初始化WebSocket连接,并添加了基本的消息发送和接收功能。

总结

综上所述,Vue3与WebSocket结合能够很好地满足实时通讯的需求。在实际开发中,还可以根据具体业务需求对WebSocket通讯做更深入的定制和优化。


http://www.ppmy.cn/ops/89480.html

相关文章

【2024年华数杯C题老外游中国】(完整题解+代码+完整参考论文)

请问 352 个城市中所有 35200 个景点评分的最高分&#xff08;Best Score&#xff0c;简称 BS&#xff09;是多少&#xff1f;全国有多少个景点获评了这个最高评分&#xff08;BS&#xff09;&#xff1f;获评了这个最高评分&#xff08;BS&#xff09;景点最多的城市有哪些&am…

为什么需要IP池?

网络爬虫经常需要大量的HTTP请求&#xff0c;而某些网站可能会对频繁请求同一IP地址的行为进行限制或封锁。通过使用IP池&#xff0c;我们可以轮流使用多个IP地址&#xff0c;降低单个IP被封的概率&#xff0c;确保爬虫能够持续正常运行。 此外&#xff1a; 地理分布&#xf…

【2024蓝桥杯/C++/B组/小球反弹】

题目 分析 Sx 2 * k1 * x; Sy 2 * k2 * y; &#xff08;其中k1, k2为整数&#xff09; Vx * t Sx; Vy * t Sy; k1 / k2 (15 * y) / (17 * x)&#xff1b; 目标1&#xff1a;根据k1与k2的关系&#xff0c;找出一组最小整数组&#xff08;k1, k2&#xff09;&#xff…

基于JAVA的物资管理系统设计与实现

点击下载源码 基于JAVA的物资管理系统设计与实现 摘要&#xff1a;随着科学技术的进步&#xff0c;计算机行业的迅速发展&#xff0c;大大提高人们的工作效率。计算机信息处理系统的引进已彻底改变了许多系统的经营管理。恒鑫租赁站长期大量出租各型钢管、扣件、塔吊等建筑施…

(STM32笔记)九、RCC时钟树与时钟 第一部分

我用的是正点的STM32F103来进行学习&#xff0c;板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话&#xff0c;用的也是这个板子和教程。 九、RCC时钟树与时钟 九、RCC时钟树与时钟1、时钟树HSE时钟HSI时钟锁相环时钟系统时钟HCLK时钟PCLK1时钟PCLK2时钟RTC时钟独…

主要的软件设计模式及其在Kotlin中的实现示例

软件设计模式&#xff08;Software Design Patterns&#xff09;是面向对象设计中常用的解决方案&#xff0c;它们为常见的软件设计问题提供了一些被证明有效的解决方案。以下是一些主要的软件设计模式及其在Kotlin中的实现示例。 创建型模式&#xff08;Creational Patterns&…

悬而未决:奇怪的不允许跨域CORS policy的问题

我在本地HBuilderX中进行预览写好的前端网页&#xff0c;它里面用了ajax访问了远程服务器的后端API网址&#xff0c;不出意外地报不允许跨域访问的错了&#xff1a;Access to XMLHttpRequest at ‘http://xxx.com/MemberUser/login’ from origin ‘http://mh.com’ has been b…

江科大/江协科技 STM32学习笔记P17

文章目录 一、TIM输入捕获输入捕获与输出比较的关系频率测量测频法测周法 输入捕获的电路异或门的执行逻辑 输入捕获通道主从触发模式输入捕获基本结构PWMI基本结构输入捕获模式测频率main.c 输入捕获模式测占空比main.c 一、TIM输入捕获 输入捕获与输出比较的关系 在输出比较中…