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

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}))}
http://www.lryc.cn/news/254388.html

相关文章:

  • 谷歌推出功能最强大的大语言模型Gemini;大规模语言模型:从理论到实践
  • Android studio 工程的 module 依赖关系图绘制 、 Android Module 依赖关系的可视化实现
  • Qt之QGraphicsView —— 笔记1.2:将QGraphicsView放置主窗口上,绘制简单图元(附完整源码)
  • linux的权限管理
  • 什么是 performance_schema ?
  • 软件多开助手的创新使用:在同一设备上玩转多个游戏
  • [linux] 输出文本文件的最后一列并去重
  • 新能源车交直流充电解释
  • Failed to connect to gitee.com port 443: Time out 连接超时提示【Bug已完美解决-鸿蒙开发】
  • 【开源】基于Vue+SpringBoot的智慧家政系统
  • javaee实验:文件上传及拦截器的使用
  • 二分查找19(Leetcode540有序数组中的单一元素)-1
  • 字节开源的netPoll底层LinkBuffer设计与实现
  • 《点云进阶》专栏文章目录
  • 二分查找算法-查找最接近的元素Python实现(题目来源dotcpp: 2926)
  • debian11,debian 如何删除虚拟内存,交换分区
  • 智能优化算法应用:基于人工大猩猩部队算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 鼎捷受邀出席“中国制造业产品创新数字化国际峰会”,共话工业软件创新发展
  • 大话数据结构-查找-多路查找树
  • unity 2d 入门 飞翔小鸟 飞翔脚本(五)
  • Linux系统调试课:I2C tools调试工具
  • uniapp中解决swiper高度自适应内容高度
  • Contrast and Generation Make BART a Good Dialogue Emotion Recognizer
  • 图的深度优先搜索(数据结构实训)
  • VUEX使用总结
  • 指定分隔符对字符串进行分割 numpy.char.split()
  • Android12蓝牙框架
  • python文件docx转pdf
  • 9.基于SpringBoot3+I18N实现国际化
  • 27. 深度学习进阶 - 为什么RNN