使用 STOMP 简单代理时的错误处理

2024-04-03

我正在使用以下命令创建简单的 STOMP 代理@EnableWebSocketMessageBroker. When RuntimeException发生在@MessageMapping我想接收 STOMP 的方法ERROR框架,但默认情况下它不是这样工作的。

看起来ERROR简单代理不支持框架:https://github.com/spring-projects/spring-framework/blob/master/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageType.java#L28-L44 https://github.com/spring-projects/spring-framework/blob/master/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessageType.java#L28-L44

另一方面,有一个发送机制ERROR框架已经可用spring-websocket它的代码引用了一些与简单代理相关的类:https://github.com/spring-projects/spring-framework/blob/master/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java#L349 https://github.com/spring-projects/spring-framework/blob/master/spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java#L349

如何启用发送机制ERROR帧时RuntimeException发生在@MessageMapping method?


快速而简单的方法是在客户端上订阅特定的错误处理程序,然后再对 @MessageMapping 端点进行任何调用。然后使用 try catch 块包装对 websocket 服务器中方法的所有调用,并处理发生的异常。然后是一个简单的例子,执行以下操作:

messagingTemplate.convertAndSend( "/topic/clientControl/1234", "SHUT_DOWN"); (or send to user etc, depends on your subscription model)

您可以向客户端发送错误消息并允许其处理它,也可以决定服务器端要执行的操作并拥有控制订阅,允许服务器将命令传递给客户端。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 STOMP 简单代理时的错误处理 的相关文章

随机推荐

  • angular-google-maps 搜索功能的工作示例

    有没有人有一个有效的搜索框示例 例如 angular google maps team 在本网站的 搜索框 下显示的搜索框 https angular ui github io angular google maps api https a
  • 将对象初始化为全零

    通常 数据结构的有效初始化是将所有成员设置为零 即使在使用 C 进行编程时 也可能需要与外部 API 进行交互 这种情况就是如此 之间有什么实际区别 some struct s memset s 0 sizeof s 简单地 some st
  • 当指定为对象属性时,IIFE 如何影响其中的此关键字

    var a name Rhona check function return this name console log a check This returns 一个空字符串我希望它返回 Rhona 它没有给出 undefined 或 n
  • 为什么 ToUpperInvariant() 比 ToLowerInvariant() 更快?

    我在 CLR via C 中读到 Jeffrey Richter 写的String ToUpperInvariant 比String ToLowerInvariant 他说这是因为 FCL 使用 ToUpperInvariant 来规范化字
  • 更改内存提供程序的默认用户对象

    我只是想更改默认值User内存中提供程序的对象 默认User对象是Symfony Component Security Core User User 但是这个对象不能满足我的要求 所以我复制了该对象并添加了一些满足我的要求的属性 然后将其命
  • getmtime() 与 datetime.now():

    此代码每年在时钟转换的晚上打印一次错误警告 中欧夏令时间到中欧时间 import os import datetime now datetime datetime now age now datetime datetime fromtime
  • Git:在一个命令中搜索所有提交消息、分支名称、提交内容

    我想搜索所有可能的引用 提交 分支 标签 所有提交消息 所有分支名称和所有提交内容 由于还没有人建议一系列命令 并且如果您还没有自己制作它 git config alias findall f echo e nFound in refs n
  • 是否可以在远程服务器上运行 matlab 并使用瘦客户端上的 matlab GUI 对其进行控制?

    类似于 emacs 与 slime 的功能 核心服务可以在高性能远程计算机上运行 而我可以在上网本上从 emacs gui 编辑和运行代码 我和我的同事经常需要用机器做一些demo 学习在matlab中运行的脚本 这需要我们随身携带笨重的笔
  • HTML Web Worker 和 Jquery Ajax 调用

    我想知道是否可以在 Web Worker 文件中使用 jQuery Google Chrome 给我这个错误 Uncaught ReferenceError 未定义 这是代码 父文件 var loader new Worker BASE U
  • 错误:php55w-common 与 CentOS 6.5 上的 php-common 冲突

    我已经安装了新的 64 位 CentOS 6 5 带有 PHP5 Mysql5 5 等 现在 当我想安装不同的 apache 模块 例如 php soap 时 我收到此错误 gt Package php soap x86 64 0 5 3
  • 默认 Android 浏览器的浏览器插件

    我想为默认的 android 浏览器开发一个插件 它将指定 google 搜索结果中的网站类别 Android 浏览器没有明确显示插件架构 我想知道如何做到这一点以及与之相关的任何参考资料 Thanks 我最近尝试制作一个android插件
  • 是否可以分离 Hibernate 实体,以便对对象的更改不会自动保存到数据库?

    我有必须转换为 JSON 的 Hibernate 实体 并且必须翻译实体中的一些值 但是当我翻译值时 这些值会立即保存到数据库中 但我不想将这些更改保存到数据库中 有解决这个问题的方法吗 您可以通过调用来分离实体Session evict
  • 清空用户定义类内的 std::vector 时未释放内存

    当我们遇到一些内存问题时std vector是一个类的一个字段 我们用大量数据填充这个向量 在程序的某个点需要释放这些数据 然而 即使向量容量为零 内存也没有被释放或完全释放 这里您有我们程序的简化版本 正如你所看到的 类Foo只有一个字段
  • 移动装箱函数时“无法移动 FnOnce 类型的值”

    我正在尝试用 Rust 进行一些高阶编程 但在处理闭包时遇到一些困难 这是一个代码片段 说明了我遇到的问题之一 pub enum Foo Bar Box
  • 有没有办法批量读取firebase文档

    我正在使用 flutter 制作一个移动应用程序 并以 firebase 作为后端 我有一个存储用户信息的用户文档集合 其中一个字段是一组引用 另一个集合中的引用文档 我想在像批处理这样的操作中使用它 然后允许读取所有文档 我知道批处理只允
  • Sequelize:查找没有关联的条目

    给出以下简单模型 class A extends Model A init aField DataTypes STRING sequelize class B extends Model B init bField DataTypes ST
  • 如何模拟应用程序更新

    我正在使用 SQLite 来存储一些数据 最近 一位用户向我投诉 每次更新应用程序时 数据库都会被擦除 我想解决这个问题 但首先我需要模拟应用程序更新 而不是将其上传到 google play 并等待 您无需将apk上传到google 您可
  • URLSessionTask如何运行

    假设我创建了一个实例URLSessionTask let task URLSession shared dataTask with url data response error in print Thread current I star
  • 按面分隔 y 轴标签或删除图例但保留空间

    好吧 我被自制的 ggplot 难住了 我想做的是具有不同 y 轴的三行一列多面图label对于每个方面 y 轴的单位都相同 这将是最方便的 但谷歌搜索告诉我这可能不可能 另外 我发现this https groups google com
  • 使用 STOMP 简单代理时的错误处理

    我正在使用以下命令创建简单的 STOMP 代理 EnableWebSocketMessageBroker When RuntimeException发生在 MessageMapping我想接收 STOMP 的方法ERROR框架 但默认情况下