sockjs-client和stompjs连接websocket服务被拒绝导致vue项目崩溃问题

1、前端连接服务器代码demo:

javascript 复制代码
// 引入stomp.js库
import SockJS from 'sockjs-client';
import Stomp from 'stompjs';

// WebSocket服务器地址
const ws = new SockJS('http://localhost:8080/my-endpoint');

// 初始化STOMP客户端
const stompClient = Stomp.over(ws);

// 连接STOMP服务器
stompClient.connect({}, frame => {
    console.log('Connected: ' + frame);

    // 订阅一个路径
    stompClient.subscribe('/topic/greetings', message => {
        console.log(JSON.parse(message.body).content);
    });
}, error => {
    console.error('STOMP error:', error);
});

// 发送消息到服务器
stompClient.send("/app/hello", {}, JSON.stringify({ 'name': 'John Doe' }));

// 断开连接
stompClient.disconnect();

2、崩溃主要原因

  • 未捕获的异常:在JavaScript(以及Vue.js这样的框架)中,如果发生一个异常且没有被任何try...catch语句捕获,那么异常会冒泡至全局作用域,导致整个应用崩溃。Vue.js自身不会捕获这些异常,因为它们是在应用代码中产生的。
  • 错误冒泡:在JavaScript中,错误冒泡到全局作用域通常指的是当一个错误在代码中被抛出(throw),并且没有被任何内部的try...catch语句捕获时,这个错误会沿着调用栈向上传播,最终到达全局作用域。如果全局作用域也没有错误处理机制,那么这个错误通常会导致整个应用崩溃,因为JavaScript引擎不知道如何继续执行后续的代码。具体来说,当函数内部发生错误时,如果这个函数没有包含try...catch块来捕获这个错误,那么错误会被传递给调用该函数的代码。如果这个调用代码也没有捕获错误,那么错误会继续向上冒泡,直到到达最顶层的全局作用域。冒泡到全局作用域的错误通常会导致浏览器控制台显示错误信息,并且可能会中断正在执行的JavaScript代码,导致应用界面停止响应或变得不可用。在单页面应用(SPA)如Vue应用中,这种全局错误可能会导致整个应用的UI停止更新或行为异常。

3、解决方式:因为当前版本的socketjs内部没有捕捉连接失败抛出的异常,所以最好的解决方式就是对websocket服务器进行健康检查,如果请求服务器有响应说明没挂进行连接,否则就舍弃websocket相关应用,舍车保帅,保证nodejs服务的正常运行。

java 复制代码
	@GetMapping("/health")
    public Health health() {
        return 'ok';
    }
相关推荐
我在人间贩卖青春1 分钟前
TCP编程核心API
网络·网络协议·tcp/ip
czy87874757 分钟前
LwIP 提供了三种主要的 API 接口,分别针对不同的应用场景(如实时性、易用性、资源占用等),开发者可根据需求选择。
网络协议
梁辰兴10 分钟前
计算机网络基础:用户数据报协议 UDP
网络·网络协议·计算机网络·udp·用户数据报协议·计算机网络基础·梁辰兴
奔跑的web.44 分钟前
TypeScript namespace 详解:语法用法与使用建议
开发语言·前端·javascript·vue.js·typescript
七夜zippoe1 小时前
HTTP协议深度解析与实现:从请求响应到HTTP/3的完整指南
python·网络协议·http·quic·帧结构
摆摊的豆丁1 小时前
FreeRTOS-Plus-TCP 协议支持与网络编程指南
网络·网络协议·tcp/ip·freertos
鱼跃鹰飞1 小时前
面试题:知道WebSocket协议吗?
网络·websocket·网络协议
计算机学姐1 小时前
基于SpringBoot的自习室座位预定系统【预约选座+日期时间段+协同过滤推荐算法+数据可视化统计】
java·vue.js·spring boot·后端·spring·信息可视化·tomcat
郝学胜-神的一滴2 小时前
Linux网络字节序详解:从理论到实践
linux·服务器·c语言·开发语言·c++·网络协议·程序人生
带带弟弟学爬虫__2 小时前
速通新Baidu Frida检测
前端·javascript·vue.js·python·网络爬虫