vue-socket.io以及原生websocket的使用
vue3使用socket.io
1、安装
npm install vue-socket.io
2、创建socket.js文件
export const registerSockets = (sockets, proxy) => {sockets &&Object.keys(sockets).forEach((t) => {// console.log(t);// "subscribe" !== t &&// "unsubscribe" !== t &&proxy.$socket.emitter.addListener(t, sockets[t], proxy);});
};export const destroySockets = (sockets, proxy) => {sockets &&Object.keys(sockets).forEach((t) => {proxy.$socket.emitter.removeListener(t, proxy);});
};
3、 main.js使用
import VueSocketIO from 'vue-socket.io';
import { registerSockets, destroySockets } from './service/utils/sockets';
const scUrl =import.meta.env.VITE_SOCKET_URL;
const sockets = new VueSocketIO({debug: true,connection: scUrl,
});app.config.globalProperties.$socket = sockets;
// 监听事件
app.config.globalProperties.$addSockets = registerSockets;
// 移除事件
app.config.globalProperties.$removeSockets = destroySockets;
4、组件使用
const sockets = {//监听事件名deviceRealData(data) {console.log(data)},deviceRealAlarm(data) {console.log(data)}}onMounted(async () => {proxy.$addSockets(sockets, proxy);})onBeforeUnmount(() => {proxy.$removeSockets(sockets, proxy);});// 开启数据推送 发送事件function opendata() {proxy.$socket.io.emit('openRealData', state.currentData.deviceSn)proxy.$socket.io.emit('openRealAlarm', state.currentData.deviceSn)}// 关闭数据推送function stopData() {proxy.$socket.io.emit('closeRealData')proxy.$socket.io.emit('closeRealAlarm')}
原生websocket
let socket;/ Websoket连接成功事件const websocketonopen = (res) => {console.log("WebSocket连接成功", res);};// Websoket接收消息事件const websocketonmessage = (res) => {console.log("接收消息", res);};// Websoket连接错误事件const websocketonerror = (res) => {console.log("连接错误", res);};// Websoket断开事件const websocketclose = (res) => {console.log("断开连接", res);};onMounted(() => {const wsurl =import.meta.env.VITE_SOCKET_URL;socket = new WebSocket(wsurl);socket.onopen = websocketonopen;socket.onmessage = websocketonmessage;socket.onerror = websocketonerror;socket.onclose = websocketclose;})onBeforeUnmount(() => {// 关闭连接socket.close();// 销毁 websocket 实例对象socket = null;});//筛选器:提交function handleFilterSubmit() {//发送事件socket.send(JSON.stringify({ deviceSN:queryParams.value.input}))}相关文章:
vue-socket.io以及原生websocket的使用
vue3使用socket.io 1、安装 npm install vue-socket.io2、创建socket.js文件 export const registerSockets (sockets, proxy) > {sockets &&Object.keys(sockets).forEach((t) > {// console.log(t);// "subscribe" ! t &&// "un…...
谷歌推出功能最强大的大语言模型Gemini;大规模语言模型:从理论到实践
🦉 AI新闻 🚀 谷歌推出功能最强大的大语言模型Gemini 摘要:谷歌正式推出其迄今为止功能最强大、最通用的大语言模型Gemini。Gemini在许多测试中表现出了最先进的性能,在大部分基准测试中击败了OpenAI的GPT-4。谷歌发布了三种不同…...
Android studio 工程的 module 依赖关系图绘制 、 Android Module 依赖关系的可视化实现
整体步骤: 1、利用gradle脚本生成dot; 2、利用graphviz将dot可视化转为图片 利用gradle脚本生成dot 下载projectDependencyGraph.gradle脚本 下载 projectDependencyGraph.gradle ,放在项目根目录, 源码如下: t…...
Qt之QGraphicsView —— 笔记1.2:将QGraphicsView放置主窗口上,绘制简单图元(附完整源码)
效果 相关类介绍 QGraphicsView类提供了一个小部件,用于显示QGraphicsScene的内容。QGraphicsView在可滚动视口中可视化。QGraphicsView将滚动其视口,以确保该点在视图中居中。 QGraphicsScene类 提供了一个用于管理大量二维图形项的场景。请注意,QGraphicsScene没有自己的视…...
linux的权限管理
在Linux系统中,文件和目录的权限管理是通过用户、组以及其他用户对文件和目录的读(r)、写(w)和执行(x)权限来实现的。以下是有关Linux权限管理的详细解释: 文件和目录权限࿱…...
什么是 performance_schema ?
MySQL的performance_schema是运行在较低级别的用于监控MySQL Server运行过程中的资源消耗、资源等待等情况的一个功能特性,它具有以下特点。 performance_schema提供了一种在数据库运行时实时检查Server内部执行情况的方法。performance_schema数据库中的表使用per…...
软件多开助手的创新使用:在同一设备上玩转多个游戏
软件多开助手:在同一设备上玩转多个游戏的创新使用 随着科技的不断发展,手机和电脑已经成为我们生活中必不可少的工具。众多游戏爱好者也越来越追求在同一设备上同时体验多个游戏的乐趣。而软件多开助手的出现为这一需求提供了创新的解决方案。 传统上…...
[linux] 输出文本文件的最后一列并去重
使用 awk 命令来实现这个需求。下面是一个示例命令: awk -F , {print $NF} a.txt | sort -u解释一下这个命令: awk -F , {print $NF} a.txt:使用逗号作为字段分隔符(-F ,),打印每行的最后一个字段&#x…...
新能源车交直流充电解释
交流充电: 国家电网输出的电都是交流电,如下图所示,具有正弦切换规律的 而电动车的电池只能接受直流电,因此需要首先把交流电转换成直流电才能充进汽车电池,这就需要到了转换器OBC(on-board Charger&#…...
Failed to connect to gitee.com port 443: Time out 连接超时提示【Bug已完美解决-鸿蒙开发】
文章目录 项目场景:问题描述原因分析:解决方案:解决方案1解决方案2:解决方案3:此Bug解决方案总结解决方案总结**心得体会:解决连接超时问题的三种方案**项目场景: 导入Sample时遇到导入失败的情况,并提示“Failed to connect to gitee.com port 443: Time out”连接超…...
【开源】基于Vue+SpringBoot的智慧家政系统
项目编号: S 063 ,文末获取源码。 \color{red}{项目编号:S063,文末获取源码。} 项目编号:S063,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服…...
javaee实验:文件上传及拦截器的使用
目录 文件上传ModelAttribute注解实验目的实验内容实验过程项目结构编写代码结果展示 文件上传 Spring MVC 提供 MultipartFile 接口作为参数来处理文件上传。 MultipartFile 提供以下方法来获取上传的文件信息: getOriginalFilename 获取上传的文件名字&#x…...
二分查找19(Leetcode540有序数组中的单一元素)-1
代码: 没用二分查找版: class Solution {public int singleNonDuplicate(int[] nums) {if(nums.length1){return nums[0];}for(int i1;i<nums.length-1;i){if(nums[i-1]nums[i]||nums[i]nums[i1]){continue;}else{return nums[i];}}if(nums[0]nums[…...
字节开源的netPoll底层LinkBuffer设计与实现
字节开源的netPoll底层LinkBuffer设计与实现 为什么需要LinkBuffer介绍设计思路数据结构LinkBufferNodeAPI LinkBuffer读 API写 APIbook / bookAck api 小结 本文基于字节开源的NetPoll版本进行讲解,对应官方文档链接为: Netpoll对应官方文档链接 netPoll底层有一个…...
《点云进阶》专栏文章目录
目录 一、PCL进阶篇* 二、Open3D进阶篇 一、PCL进阶篇 * PCL 最小二乘拟合二维直线PCL 最小二乘拟合空间直线PCL 计算点云的倒角距离(Chamfer Distance)PCL 点云配准精度评价——点到面的均方根误差PCL 可视化八叉树PCL 计算Hausdorff距离PCL 从变换矩…...
二分查找算法-查找最接近的元素Python实现(题目来源dotcpp: 2926)
题目描述 在一个非降序列中,查找与给定值最接近的元素。 输入格式 第一行包含一个整数n,为非降序列长度。1 < n < 100000。 第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。 第三行包含一个整数m&#x…...
debian11,debian 如何删除虚拟内存,交换分区
1.以管理员身份登录系统 2.输入以下命令以删除虚拟内存,该命令将关闭当前正在使用的虚拟内存。 sudo swapoff -a 3.输入以下命令以永久删除虚拟内存(硬盘内存文件): sudo rm /swapfile 4.重启系统 总结:以上步骤将删除 Debian 11 中的虚拟内存。请注意…...
智能优化算法应用:基于人工大猩猩部队算法无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于人工大猩猩部队算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于人工大猩猩部队算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工大猩猩部队算法4.实验参数设…...
鼎捷受邀出席“中国制造业产品创新数字化国际峰会”,共话工业软件创新发展
11月30日, 由e-works数字化企业网、四川省智能制造创新中心、重庆制信信息技术服务有限公司主办的第十九届中国制造业产品创新数字化国际峰会在四川成都盛大开幕。 作为制造业研发信息化领域规模、影响力兼具的专业论坛,本届峰会以“构建基于数字底座的…...
大话数据结构-查找-多路查找树
注:本文同步发布于稀土掘金。 7 多路查找树 多路查找树(multi-way search tree),其每个结点的孩子可以多于两个,且每一个结点处可以存储多个元素。由于它是查找树,所有元素之间存在某种特定的排序关系。 …...
2026 年软硬两用床垫,为何能做到不塌陷?
引言随着科技的不断进步和消费者需求的多样化,床垫市场也在不断创新。特别是软硬两用床垫,因其能够满足不同人群的需求而备受青睐。然而,如何确保床垫在长时间使用后不塌陷,仍然是一个技术难题。本文将探讨2026年软硬两用床垫如何…...
三分钟解锁Windows 11任务栏:Taskbar11让你的桌面重获自由
三分钟解锁Windows 11任务栏:Taskbar11让你的桌面重获自由 【免费下载链接】Taskbar11 Change the position and size of the Taskbar in Windows 11 项目地址: https://gitcode.com/gh_mirrors/ta/Taskbar11 还在为Windows 11那固执的任务栏设置感到束手无策…...
CircularProgressBar扩展开发:如何基于现有库创建自定义进度条组件
CircularProgressBar扩展开发:如何基于现有库创建自定义进度条组件 【免费下载链接】CircularProgressBar Create circular ProgressBar in Android ⭕ 项目地址: https://gitcode.com/gh_mirrors/ci/CircularProgressBar CircularProgressBar是一个功能强大…...
AI Agent设计模式:从ReAct到Plan-and-Execute
Agent 设计模式:ReAct 与 Plan-Execute 讲透Function Calling 让 Agent 会用工具,但真正让 Agent「聪明」的,是它的思考模式。这就像给你一本字典不意味着你会写文章——你需要方法论。ReAct 和 Plan-Execute 就是 Agent 的两种核心方法论。一…...
基于Adafruit Trinket与旋转编码器制作USB物理音量旋钮
1. 项目概述与核心价值作为一个常年泡在电脑前,需要频繁切换音乐、会议和视频的开发者,我发现自己每天点击系统音量图标的次数多得离谱。那种在关键时刻需要快速调低音量,却不得不移动鼠标、寻找小图标的操作,不仅打断了工作流&am…...
B站视频转文字终极指南:5分钟掌握高效知识管理神器
B站视频转文字终极指南:5分钟掌握高效知识管理神器 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 你是否曾为了一段精彩的B站课程内容࿰…...
AI Agent Harness恶意指令识别拦截
AI Agent Harness恶意指令识别拦截:构建新一代智能应用安全屏障摘要/引言 开门见山(Hook) 想象一下这个场景:你花了3个月精心搭建了一个**“全栈AI编程助手Agent集群”**——主Agent负责理解需求并拆解任务,代码生成Ag…...
Win11触控板误触太烦人?三招精准关闭方案,总有一款适合你
1. 系统设置:最快捷的触控板关闭方案 刚换Win11那会儿,我总在打字时不小心碰到触控板,光标突然跳转导致输入错位。后来发现系统设置里藏着个"一键关闭"开关,实测下来这招最适合临时需要禁用触控板的场景。具体操作路径&…...
石榴石固态电解质表面再生:氧气处理与气氛控制的关键突破
1. 项目概述:破解石榴石固态电解质表面钝化的密码如果你正在研究或关注下一代高能量密度电池,那么对固态电解质(Solid Electrolyte, SE)一定不陌生。在众多候选者中,石榴石型固态电解质,特别是掺杂的LLZO&a…...
换背景照片怎么制作?一篇全网最全的AI抠图工具对比指南
最近经常有朋友问我:"怎样才能快速换背景照片啊?"确实,随着自媒体时代的到来,无论是做电商展示产品、准备证件照,还是制作社交媒体内容,都离不开换背景这个需求。今天我就把这两年用过的所有抠图…...
