vue websocket 使用

基于webSocket通信的库主要有 socket.io,SockJS
关于SockJS的使用
先安装 sockjs-client 和 stompjs
npm install sockjs-client
npm install stompjs
import SockJS from 'sockjs-client';
import Stomp from 'stompjs';
export default {
data () {
return {
}
},
methods: {
// ws连接
initWebsockt () {
this.connection()
// 断开重连,尝试发送消息
this.socketTimer = setInterval(() => {
try {
this.stompClient.send('msg')
} catch (err) {
console.log('websocket 请求断开了:', err)
this.connection()
}
}, 5000)
},
connection () {
// 建立连接
let socket = new SockJS('http://172.16.40.154:9000/messageWarning-websocket')
// 获取stomp子协议的客户端对象
this.stompClient = Stomp.over(socket)
let headers = { Authorization:'' }
// 发送websocket连接
this.stompClient.connect(headers,(frame) => {
console.log('frame is:', frame)
// 订阅服务
this.stompClient.subscribe('/topic/messageWarning', (msg) => {
console.log('广播成功')
console.log(msg); // msg.body存放的是服务端发送给我们的信息
},headers)
}, (err) => {
// 连接发生错误时的处理函数
console.log('失败')
console.log(err);
});
},
disconnect () {
if (this.stompClient) {
this.stompClient.disconnect()
}
}
}
beforeDestroy () {
this.disconnect()
clearInterval(this.socketTimer)
}
}
sockjs-client
sockjs-client是从SockJS中分离出来的用于客户端使用的通信模块.所以我们就直接来看看SockJS. SockJS是一个浏览器的JavaScript库,它提供了一个类似于网络的对象,SockJS提供了一个连贯的,跨浏览器的JavaScriptAPI,它在浏览器和Web服务器之间创建了一个低延迟,全双工,跨域通信通道. 你可能会问,我为什么不直接用原生的WebSocket而要使用SockJS呢?这得益于SockJS的一大特性,一些浏览器中缺少对WebSocket的支持,因此,回退选项是必要的,而Spring框架提供了基于SockJS协议的透明的回退选项。SockJS提供了浏览器兼容性,优先使用原生的WebSocket,如果某个浏览器不支持WebSocket,SockJS会自动降级为轮询.
stomjs
STOMP(Simple Text-Orientated Messaging Protocol) 面向消息的简单文本协议;
WebSocket是一个消息架构,不强制使用任何特定的消息协议,它依赖于应用层解释消息的含义.
与HTTP不同,WebSocket是处在TCP上非常薄的一层,会将字节流转化为文本/二进制消息,因此,对于实际应用来说,WebSocket的通信形式层级过低,因此,可以在 WebSocket 之上使用STOMP协议,来为浏览器 和 server间的 通信增加适当的消息语义。
STOMP与WebSocket 的关系:
HTTP协议解决了web浏览器发起请求以及web服务器响应请求的细节,假设HTTP协议不存在,只能使用TCP套接字来编写web应用,你可能认为这是一件疯狂的事情;
直接使用WebSocket(SockJS)就很类似于使用TCP套接字来编写web应用,因为没有高层协议,就需要我们定义应用间发送消息的语义,还需要确保连接的两端都能遵循这些语义;
同HTTP在TCP套接字上添加请求-响应模型层一样,STOMP在WebSocket之上提供了一个基于帧的线路格式层,用来定义消息语义.
碰到的问题
stomp.js:463 WebSocket connection to 'wss://${backend}/websocket' failed: Error during WebSocket handshake: Unexpected response code: 200
解决方案:修改nginx配置
部分参考 https://blog.csdn.net/hefeng_aspnet/article/details/142206508
websocket Whoops! Lost connection to 'schema://${backend}/websocket'
解决方案:后端添加jar包
https://blog.csdn.net/AaronChen01/article/details/80019294
相关文章:
vue websocket 使用
基于webSocket通信的库主要有 socket.io,SockJS 关于SockJS的使用 先安装 sockjs-client 和 stompjs npm install sockjs-client npm install stompjs import SockJS from sockjs-client; import Stomp from stompjs; export default { data () { …...
Spring Boot 入门面试五道题
在准备Spring Boot面试时,从简单到困难设计面试题可以帮助你系统地复习和评估自己的掌握程度。以下是五个不同难度的Spring Boot面试题: 1. 简单题:什么是Spring Boot?它主要解决了什么问题? 答案: Sprin…...
【鸿蒙】HarmonyOS NEXT开发快速入门教程之ArkTS语法装饰器(上)
文章目录 前言一、ArkTS基本介绍1、 ArkTS组成2、组件参数和属性2.1、区分参数和属性的含义2.2、父子组件嵌套 二、装饰器语法1.State2.Prop3.Link4.Watch5.Provide和Consume6.Observed和ObjectLink代码示例:示例1:(不使用Observed和ObjectLi…...
国产品牌 KTH1701系列 高性能、低功耗、全极磁场检测霍尔开关传感器
国产品牌 KTH1701系列 高性能、低功耗、全极磁场检测霍尔开关传感器 概述: KTH1701 是一款低功耗霍尔开关传感器,专为空间紧凑系统和电池电量敏感系统而设计。该芯片可以提供多种磁场阈值、开关工作频率和封装形式以适配各种应用。 当施加的S 极或 N 极…...
如何不终止容器退出Docker Bash会话
如何不终止容器退出Docker Bash会话 💖The Begin💖点点关注,收藏不迷路💖 当通过docker exec进入Docker容器的bash会话后,如果想退出但不停止容器,可以使用快捷键组合: 按下Ctrl+P然后紧接着按下Ctrl+Q。 这个操作会让你从bash会话中“分离”出来,但容器会继续运行…...
杰理芯片各型号大全,方案芯片推荐—云信通讯
29₤vFG537sTUWr《 https://s.tb.cn/h.gJ4LjAH CZ0016 杰理芯片 杰理芯片各型号大全,方案芯片推荐 https://shop.m.taobao.com/shop/shopIndex.htm?shop_id498574364&bc_fl_srctbsms_crm_3928605685_deliver$2553947245685_10973444242...
解决服务器首次请求异常耗时问题
1. 问题描述 在我们的图像识别API服务中,我们遇到了一个棘手的问题:服务器在首次接收请求时,响应时间异常地长,经常导致超时错误。这不仅影响了用户体验,还可能导致系统不稳定。 现象: 测试接口在首次调用时出现超时后续请求则能正常响应复现方法: 只需在服务重启后或长时间…...
VS code 创建与运行 task.json 文件
VS code 创建与运行 task.json 文件 引言正文创建 .json 文件第一步第二步第三步 运行 .json 文件 引言 之前在 VS code EXPLORER 中不显示指定文件及文件夹设置(如.pyc, pycache, .vscode 文件) 一文中我们介绍了 settings.json 文件,这里我…...
【电商API接口定价】618品牌定价参考(电商API接口数据采集)
价格是618狂欢节最为核心的存在,定价也成为品牌至关重要的环节。为了制定合理的价格策略,品牌和商家可以利用电商API接口进行数据采集,以获取更准确的市场信息和竞争态势。而电商API究竟可以帮助品牌如何定价呢? 首先,…...
PyRFC 适用于 Python 的异步、非阻塞 SAP NetWeaver RFC SDK 绑定
Asynchronous, non-blocking SAP NetWeaver RFC SDK bindings for Python. 适用于 Python 的异步、非阻塞 SAP NetWeaver RFC SDK 绑定 Call for Maintainers This project is currently looking for new maintainers. Please see this issue for details. Features Client …...
解决matplotlib画中文时缺乏中文字体问题。
https://www.cnblogs.com/oboth-zl/p/15152508.html 手动安装字体: Debian 和 Ubuntu 下对中文支持比较好的字体有: fonts-droid、ttf-wqy-zenhei 和 ttf-wqy-microhei 等,除了文泉驿系列字体外,比较流行的免费中文字体还有文鼎提…...
小琳AI课堂 掌握强化学习:探索OpenAI Gym的魅力与Python实战
大家好,这里是小琳AI课堂。今天我们来聊聊OpenAI Gym,一个强大的强化学习(Reinforcement Learning, RL)工具包。🌟 OpenAI Gym,由人工智能研究实验室OpenAI创建,为强化学习的研究和开发提供了一…...
1.3 等价类划分法
欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 单功能2 等价划分法3 测试步骤3.1 分析需求3.2 设计测试点3.3 将测试点转为可执行用例文档3.4 执行测试3.5 缺陷管理 前言 在现代软件开发中,确保核心功能的有效性…...
概率论原理精解【15】
文章目录 可数性与可分性第二可数空间第二可数空间的定义第二可数空间的性质第二可数空间的例子第二可数空间的例题(理论性质证明)其它性质深入理解第二可数空间 可分空间可分空间的定义可分空间的性质可分空间的例子可分空间的例题在可分空间中…...
【新手上路】衡石分析平台系统管理手册-安全管理
安全策略 安全策略是针对系统中所有用户进行的安全控制,只有系统管理员可以设置。 打开设置->安全策略页面。 登录安全策略 启用复杂密码 启用之后,用户修改密码时,必须输入符合要求的复杂密码。 密码90天失效 密码的有效期…...
【Matlab】matlab 结构体使用方法
在 MATLAB 中,结构体(struct)是一种能够将不同类型和大小的数据组合在一起的容器。它允许你将数据分配给命名的字段(fields),每个字段可以存储不同的数据类型,如数值、字符串、数组、矩阵等。以…...
Mamba YOLO World
论文地址:https://arxiv.org/pdf/2409.08513v1 代码地址: GitHub - Xuan-World/Mamba-YOLO-World: Mamba-YOLO-World: Marrying YOLO-World with Mamba for Open-Vocabulary Detection 开集检测(OVD)旨在检测预定义类别之外的物体…...
JVM 内存模型:堆、栈、方法区讲解
1. 引言 Java 虚拟机(JVM)的内存模型是 Java 程序运行时的基础之一。JVM 内存模型主要包括 堆、栈、和 方法区。它们各自有不同的作用和管理方式,并且影响着程序的性能和稳定性。为了更好地理解 JVM 的内存管理机制,我们将结合电…...
24年蓝桥杯及攻防世界赛题-MISC-2
11 Railfence fliglifcpooaae_hgggrnee_o{cr} 随波逐流编码工具 分为5栏时,解密结果为:flag{railfence_cipher_gogogo} 12 Caesar rxms{kag_tmhq_xqmdzqp_omqemd_qzodkbfuaz} mode1 #12: flag{you_have_learned_caesar_encryption} 随波逐流编码工具 13 base64 base64解…...
openssl-AES-128-CTR加解密char型数组分析
本文章通过对一个unsigned char*类型的数据做简单的加解密操作来学习如何使用openssl库函数。 openssl为3.0.0,对此前版本的很多函数都不兼容。 加解密源码 #include <openssl/evp.h> #include <openssl/err.h> #include <string.h> #include …...
3大跨平台游戏开发库部署方案:从环境搭建到性能优化的全流程指南
3大跨平台游戏开发库部署方案:从环境搭建到性能优化的全流程指南 【免费下载链接】raylib A simple and easy-to-use library to enjoy videogames programming 项目地址: https://gitcode.com/GitHub_Trending/ra/raylib 跨平台游戏开发库raylib凭借其轻量级…...
BetterJoy控制器配置终极指南:从零开始快速掌握Switch手柄PC使用技巧
BetterJoy控制器配置终极指南:从零开始快速掌握Switch手柄PC使用技巧 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https:…...
4个高效步骤实现HMCL启动器数据无忧迁移全攻略
4个高效步骤实现HMCL启动器数据无忧迁移全攻略 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL 当你终于升级了新电脑,兴冲冲地安装好HMCL启动器准备…...
国风美学生成模型v1.0动态生成:制作一段水墨风格动画的逐帧渲染流程
国风美学生成模型v1.0动态生成:制作一段水墨风格动画的逐帧渲染流程 最近在玩一个挺有意思的国风美学模型,它生成的水墨画效果确实惊艳。但静态图片看久了,我就在想,能不能让这些画“动”起来?比如,让一滴…...
IDA Pro高效操作:快捷键全解析与实战应用
1. 逆向工程中的效率革命:为什么快捷键如此重要 刚接触逆向分析时,我总被同事的操作速度震惊——他们不用鼠标就能在IDA里快速跳转、标记数据、切换视图。直到发现他们都在用快捷键组合,我才明白效率差距的关键。逆向工程本质上是与二进制代码…...
在线数据处理工具
推荐一个好用的在线数据处理工具,程序员必备 作为程序员,经常需要处理各种文本数据。今天推荐10个超好用的在线工具,每个都能帮你节省大量时间。 1. 文本去重工具 地址:https://www.aiyun1.cloud/dedup 功能:一键去除…...
Nano-Banana模型安全防护:对抗样本检测与防御
Nano-Banana模型安全防护:对抗样本检测与防御 在AI模型日益普及的今天,安全性已成为不可忽视的核心议题。Nano-Banana模型通过引入先进的对抗样本检测与防御机制,在鲁棒性上实现了显著突破,有效提升了模型在复杂环境下的可靠性。…...
OpenClaw定时任务管理:千问3.5-35B-A3B-FP8实现早间资讯自动推送
OpenClaw定时任务管理:千问3.5-35B-A3B-FP8实现早间资讯自动推送 1. 为什么需要自动化资讯推送 每天早上打开电脑第一件事,就是查看行业动态和技术新闻。但手动检索各大平台、整理关键信息要耗费20多分钟,经常打乱晨间工作节奏。直到发现Op…...
语音情感识别在心理评估中的应用:Emotion2Vec+镜像实战案例
语音情感识别在心理评估中的应用:Emotion2Vec镜像实战案例 1. 语音情感识别技术概述 语音情感识别(Speech Emotion Recognition, SER)技术正在改变传统心理评估的方式。这项技术通过分析语音中的声学特征,能够准确识别说话者的情…...
LVGL8实战:打造个性化数字密码键盘界面
1. 为什么需要自定义密码键盘 在智能家居控制面板、金融支付终端这类对安全性要求较高的场景中,系统自带的软键盘往往存在两个致命问题:一是界面风格与产品整体设计语言不协调,二是可能存在输入轨迹泄露的风险。去年我给某智能门锁厂商做方案…...
