vue实现websocket实时短消息通知
1、原理
websocket就是通过服务器向客户端推送消息,客户端也可以主动向服务器发送消息,是真正的双向平等对话,是一种长连接,只需要通过一次请求进行初始化。
2、事件
- onopen: 客户端和服务器建立连接后触发,被称为客户端和服务器之间的初始握手。如果接收到open, 说明已经连接成功,可以进行通信了。
- onmessage: 接收到消息时触发。服务器发送给客户端的消息可包括纯文本消息,二进制数据(Blob消息或者ArrayBuffer消息)。
- onerror: 响应意外故障时触发,在错误之后总是会终止连接。
- onclose:连接关闭时触发。一旦连接关闭后,客户端和服务端将不会再进行消息的收发。也可主动调用close()方法关闭连接
3、方法
- send() : 在连接成功后关闭前,发送消息(onopen后和onclose前才可发送消息)
- 参数:
data: 要发送的数据,可以是字符串、二进制数据或者 Blob 对象。
- 参数:
- close() : 关闭连接
- 参数:
code (可选): 一个数字,表示连接关闭的状态码。常见的状态码有 1000 表示正常关闭,1001 表示端点离开,等等。
reason (可选): 一个字符串,表示连接关闭的原因。
- 参数:
4、实际应用
一般在登录后系统初始化的时候建立连接,使用vue的全局路由导航守卫可轻松实现
/*** 创建websocket连接* @param {{}} data 请求数据* @returns {Object}**/
export function connectSocket(data = {}) {// 连接错误error仅可重启3次let reloadTime = 3, timer;webSocketInit();function webSocketInit() {// 本次sess存储webSocket连结状态,在异常/关闭连结时,重新心跳起来window.sessionStorage.setItem('connSocket', '1')if (window.webSocket) window.webSocket.close();// 测试地址不可用替换为自己的地址ws或wss开头const ws = window.webSocket = new WebSocket('ws://124.222.224.186:8800');ws.onopen = () => {// window.sessionStorage.setItem('onopen', new Date().getTime());// 调用订阅消息的接口ws.send(JSON.stringify(data));};// 连接关闭ws.onclose = () => {// window.sessionStorage.setItem('onclose', new Date().getTime());window.sessionStorage.setItem('connSocket', '0')reconnect('close');};// 接收服务器推送消息ws.onmessage = (res) => {const messData = JSON.parse(res.data)ElNotification.info({title: '消息通知',message: messData.data ? JSON.parse(messData.data).message : ''});};// 连接发生错误时ws.onerror = () => {// window.sessionStorage.setItem('onerror', new Date().getTime());window.sessionStorage.setItem('connSocket', '0')reconnect('error');}}// 重连function reconnect(mode) {window.clearTimeout(timer);// 连接错误仅可重启3次if (mode === 'error' && reloadTime <= 0) return false;// connSocket为0时才可重启if (window.sessionStorage.getItem('connSocket') === '1') return false;timer = setTimeout(function () {reloadTime--;webSocketInit();}, 2000);}
}
相关文章:
vue实现websocket实时短消息通知
1、原理 websocket就是通过服务器向客户端推送消息,客户端也可以主动向服务器发送消息,是真正的双向平等对话,是一种长连接,只需要通过一次请求进行初始化。 2、事件 onopen: 客户端和服务器建立连接后触发,被称为客…...
tinymce扩展功能:1、行高、段落间距、格式刷;2、视频上传进度条;3、对复制的图片设置尺寸
tinymce扩展功能:1、行高、段落间距、格式刷;2、视频上传进度条;3、对复制的图片设置尺寸 一、需求描述二、行高、段落间距、格式刷插件三、实现视频上传的进度条、对复制的图片设置尺寸 一、需求描述 使用技术: vue2 tinymce5.…...
计算机毕业设计Python+图神经网络手机推荐系统 手机价格预测 手机可视化 手机数据分析 手机爬虫 Django Flask Spark 知识图谱
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
WPF的<ContentControl>控件
在WPF(Windows Presentation Foundation)中,<ContentControl>是一个非常有用的控件,它允许你将内容放入一个控件中,这个内容可以是任何对象。ContentControl的主要特点是它有一个Content属性,你可以将…...
Python并发编程——multiprocessing
目录 1. 引言1.1 并发与并行的区别 2. 多进程开发2.1 Process 类的常用方法2.2 进程的生命周期与同步 3. 进程之间的数据共享3.1 使用 Value 和 Array3.2 使用 Manager 实现高级数据共享 4. 进程锁4.1 更复杂的锁应用4.2 锁的死锁与避免4.3 信号量与条件变量 5. 进程池5.1 imap…...
智能家居的未来:AI让生活更智能还是更复杂?
内容概要 智能家居的概念源于将各种家居设备连接到互联网,并通过智能技术进行控制和管理。随着人工智能的迅速发展,这一领域也迎来了前所未有的机遇。从早期简单的遥控器到如今可以通过手机应用、语音助手甚至是环境感应进行操作的设备,智能…...
【物联网技术】ESP8266 WIFI模块在AP模式下作为TCP服务器与多个电脑/手机网络助手(TCP客户端)通信——TCP数据透传
前言:完成ESP8266 WIFI模块在AP模式下作为TCP服务器与多个电脑/手机网络助手(TCP客户端)通信——实现TCP数据透传 AP模式,通俗来说模块可以发出一个WIFI热点提供给电脑/手机连接。 TCP服务端,通俗来说就是模块/单片机作为服务器,可以接收多个客户通道的连接。 本…...
十五:java web(7)-- Spring Boot
目录 1. Spring Boot 简介 1.1 简介 1.2 Spring Boot 的特点 1.3 Spring Boot 和 Spring 的关系 2. Spring Boot 快速入门 2.1 创建第一个 Spring Boot 项目 3. Spring Boot 配置管理 3.1 application.properties 和 application.yml 配置 这两种都可以 好像现在更推荐…...
洛谷每日一题——P1036 [NOIP2002 普及组] 选数、P1045 [NOIP2003 普及组] 麦森数(高精度快速幂)
P1036 [NOIP2002 普及组] 选数 题目描述 [NOIP2002 普及组] 选数 - 洛谷 运行代码 #include <stdio.h> int n, k, a[25], t; int ss(int b) {int i;if (b < 2)return 0;for (i 2; i * i < b; i)if (b % i 0)return 0;return 1; } void dfs(int num, int sum, …...
OpenHarmony开源鸿蒙
OpenHarmony_百度百科 2024年4 月 1 日,开源鸿蒙 OpenHarmony 4.1 Release 版本于昨日发布,开发套件同步升级到 API 11 Release...
2024.11.4 STM32点灯和简单的数据收发
1.发送函数 HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); 参数1: UART 处理结构体的指针,该结构体包含了 UART 的所有配置参数。 参数2:要发送的数据指针 参数3&…...
Android Studio jcenter 停止服务,改用mavenCentral
随着jcenter在2021年2月28日停止服务,Android和Java开发者需寻找替代方案。推荐使用MavenCentral,可借助国内镜像加速。此外,jitpack.io也是一个选项,但对于大型项目,自建Nexus或MavenCentral更合适。迁移步骤包括更新…...
EasyPOI使用详解
EasyPOI 简介 easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 文档:http://easypoi.mydoc.io/#categor…...
【云原生开发】K8S多集群资源管理平台架构设计
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
基于SpringBoot的城镇住房保障系统开发
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
一文解秘Rust如何与Java互操作
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。转载请注明来自 唯你 使用场景 JAVA 与 Rust 互操作让 Rust 可以背靠 Java 大生态来做更多事情,而 Java 也可以享受 Rust 语言特性的内存安全,所有权机制,无畏并发。…...
手机发展史介绍
手机,这个曾经在电影和科幻小说中出现的高科技产品,如今已经渗透进了我们生活的每个角落。从单纯的通讯工具到如今集成了通讯、娱乐、工作、社交等多种功能的智能终端,手机的发展史也是人类科技进步的缩影。本文将从手机的发展历程、技术革新…...
【ArcGISPro】单次将自己建立的工具箱添加至Arcpy中
新建工具箱 添加至Arcpy中 调用刚添加的工具箱...
docker镜像仓库常用命令
docker镜像仓库常用命令 docker logindocker logoutdocker pulldocker pushdocker searchdocker imagesdocker image inspectdocker tagdocker rmidocker image prunedocker savedocker loaddocker history docker login 语法: docker login [options] [server] 功能ÿ…...
springboot 传统应用程序,适配云原生改造
概述 2024年传统应用程序上云,改造方案 1、mysql 云环境高可用方案 2、redis 云环境高可用方案 3、nginx 云环境高可用方案 4、应用 云环境高可用方案1、mysql 云环境高可用方案 1.1 你先了解 1.1.1 你先了解“mysql高可用方案” 主从复制(Master-S…...
TRAE SOLO模式实战:如何用AI上下文工程师5分钟搞定JWT登录接口开发
TRAE SOLO模式实战:5分钟构建JWT登录接口的AI开发革命 清晨的阳光透过百叶窗洒在键盘上,咖啡杯里升起最后一缕热气。作为一名全栈开发者,你刚收到产品经理的紧急需求:"今天下班前上线用户登录功能,支持邮箱密码验…...
Spring_couplet_generation 模型推理性能优化:操作系统级调优指南
Spring_couplet_generation 模型推理性能优化:操作系统级调优指南 想让你的春联生成模型跑得更快、更稳吗?很多朋友在部署AI模型时,往往只关注模型本身和代码,却忽略了承载这一切的“地基”——操作系统。今天,我们就…...
Ostrakon-VL终端教程:终端日志记录与扫描任务审计追踪
Ostrakon-VL终端教程:终端日志记录与扫描任务审计追踪 1. 像素特工终端简介 Ostrakon-VL终端是一款专为零售与餐饮行业设计的智能扫描工具,它将复杂的图像识别任务转化为直观有趣的"数据扫描任务"。与传统工业级UI不同,这款终端采…...
Qwen3-ASR-1.7B一文详解:方言识别泛化能力、跨地域口音迁移学习实践
Qwen3-ASR-1.7B一文详解:方言识别泛化能力、跨地域口音迁移学习实践 1. 方言识别新突破:Qwen3-ASR-1.7B的技术亮点 语音识别技术近年来发展迅速,但方言和口音识别一直是行业难题。不同地区的方言差异大,同一方言在不同地区的口音…...
南北阁Nanbeige 4.1-3B效果展示:同一问题在不同temperature设置下的风格对比
南北阁Nanbeige 4.1-3B效果展示:同一问题在不同temperature设置下的风格对比 1. 引言:为什么关注temperature参数? 如果你用过AI对话工具,可能会发现一个有趣的现象:同一个问题,有时候AI的回答严谨专业&a…...
RNA Clean-Up and Concentration Kits:适用于小RNA测序的RNA纯化与浓缩方案
在分子生物学研究中,RNA的纯度与浓度直接影响下游实验的成败。无论是从TRIzol等酚类试剂中提取的RNA,还是经过体外转录、DNase处理、标记反应等酶促步骤的样本,均可能残留影响后续实验的杂质。由艾美捷代理的Norgen Biotek推出的RNA Clean-Up…...
一键部署文档分析服务:YOLO X Layout模型Docker实战教程
一键部署文档分析服务:YOLO X Layout模型Docker实战教程 1. 为什么需要文档版面分析? 在日常工作中,我们经常遇到这样的场景:收到一份扫描的合同PDF,需要提取关键条款;或者拿到一份企业年报,想…...
一键切换模型:OpenClaw同时管理多个SecGPT-14B实例
一键切换模型:OpenClaw同时管理多个SecGPT-14B实例 1. 为什么需要管理多个模型实例 去年我在搭建本地AI安全分析系统时,遇到了一个典型困境:当SecGPT-14B模型需要版本升级时,整个服务必须停机。更糟的是,有次模型推理…...
方寸陶瓷藏乾坤:百能云板用陶瓷基板四大核心工艺,赋能万物互联时代
当你驾驶新能源汽车平稳穿梭在城市街巷,当深夜的 LED 路灯精准照亮回家的路,当手机人脸识别瞬间解锁生活便捷 —— 你或许不会想到,这些场景的背后,都离不开一块 “隐形基石”:陶瓷散热基板。作为电子设备的 “散热心脏…...
数据处理与统计分析----沙箱
命令行操作沙箱...
