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

WebSocket STOMP协议服务端给客户端发送ERROR帧

第一种:手动主装ERROR帧发送

import org.springframework.messaging.Message;
import org.springframework.messaging.MessageHeaders;
import org.springframework.messaging.simp.stomp.StompCommand;
import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.web.socket.messaging.StompSubProtocolErrorHandler;public class CustomStompErrorHandler extends StompSubProtocolErrorHandler {@Overridepublic Message<byte[]> handleClientMessageProcessingError(Message<byte[]> clientMessage, Throwable ex) {// 创建ERROR帧的头部信息StompHeaderAccessor errorAccessor = StompHeaderAccessor.create(StompCommand.ERROR);// 设置错误信息errorAccessor.setMessage(ex.getMessage());// 设置会话IDStompHeaderAccessor clientAccessor = StompHeaderAccessor.wrap(clientMessage);errorAccessor.setSessionId(clientAccessor.getSessionId());// 保留其他必要的头部信息errorAccessor.setLeaveMutable(true);// 创建并返回ERROR帧消息return MessageBuilder.createMessage(new byte[0], errorAccessor.getMessageHeaders());}
}

将自定义的这个在配置中注入

// 注册自定义错误处理器@Beanpublic CustomStompErrorHandler customStompErrorHandler() {return new CustomStompErrorHandler();}

第二种:直接抛出MessageDeliveryException这个异常,Spring框架会自己去找StompSubProtocolErrorHandler然后处理

 throw new MessageDeliveryException("直接抛出");

http://www.dtcms.com/a/363031.html

相关文章:

  • 串口服务器技术详解:2025年行业标准与应用指南
  • 大文件稳定上传:Spring Boot + MinIO 断点续传实践
  • DevOps部署与监控
  • WPF中的DataContext以及常见的绑定方式
  • Zynq开发实践(FPGA之流水线和冻结)
  • FPGA入门-分频器
  • 【Python - 基础 - 工具】解决pycharm“No Python interpreter configured for the project”问题
  • 【踩坑随笔】VScode+ESP-IDF头文件标红但能正常运行
  • 广播电视制作领域,什么是SMPTE标准?
  • vscode使用black对python代码进行格式化
  • 2025年了,学C#上位机需要什么条件
  • Day33 网络编程:OSI/TCP/IP模型、协议族与UDP编程
  • 虚拟继承:破解菱形继承之谜
  • Redis核心数据类型解析——string篇
  • Linux驱动开发学习笔记
  • 【C++框架#1】gflags 和 gtest 安装使用
  • 情况三:已经 add ,并且也 commit 了
  • 10 51单片机之DS1302实时时钟
  • 2025 年普通人还可以期待 NFT 交易市场吗?
  • 第四届可再生能源与电气科技国际学术会议(ICREET 2025)
  • 【数学建模学习笔记】时间序列分析:LSTM
  • 碳酸钆:稀土家族里看不见的科技推手
  • Sentinel vs Resilience4j vs Bucket4j:分布式限流方案对比与实战
  • [re_2] rpc|http|nginx|protobuf|
  • 腾讯云上有性能比较强的英伟达GPU
  • Java集合源码解析之ArrayList
  • DELPHI 利用OpenSSL实现加解密,证书(X.509)等功能
  • PFLOTRAN 模拟多相、多组分、反应性流动与传输过程的高性能并行数值模拟软件
  • spring boot驴友结伴游网站的设计与实现(代码+数据库+LW)
  • 深入分析 json2(新)与标准的 jsonrpc的区别