当前位置: 首页 > 知识库问答 >
问题:

使用STOMP simple broker时的错误处理

梁丘书
2023-03-14

我正在使用@enableWebSocketMessageBroker创建简单的STOMP代理。当@messagemapping方法中出现runtimeexception时,我希望收到STOMPerror帧,但默认情况下它不是这样工作的。

另一方面,在spring-websocket中有一种发送error帧的机制,它的代码引用了一些与简单代理相关的类:https://github.com/spring-projects/spring-framework/blob/master/spring-websocket/messaging/springframework/web/socket/messaging/stompsubprotocolhandler.java#l349

如何启用在@messagemapping方法中发生runtimeexception时发送错误帧的机制?

共有1个答案

訾凯歌
2023-03-14

要做到这一点,快速简便的方法是在对@MessageMappingendpoint进行任何调用之前,在客户机上订阅一个特定的错误处理程序。然后用try catch块包装websocket服务器中对该方法的所有调用,并处理发生的异常。这是一个简单的例子,做一些类似的事情:

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

您可以向客户机发送错误消息并允许其处理,也可以决定在服务器端做什么,并拥有一个控制订阅,允许服务器向客户机传递命令。

 类似资料:
  • 通过对错误类型实现 Display 和 From,我们能够利用上绝大部分标准库错误处理工具。然而,我们遗漏了一个功能:轻松 Box 我们错误类型的能力。 标准库会自动通过 Form 将任意实现了 Error trait 的类型转换成 trait 对象 Box<Error> 的类型(原文:The std library automatically converts any type that imp

  • 问题内容: 在使用StackExchange.Redis客户端时,寻求有关处理临时网络问题的指导。 为了澄清起见,我并不是要首先使用ConnectionMultiplexer.Connect()连接到Redis服务器。我指的是在操作中间如何处理由于任何原因而中断的连接。(我们可以假设该命令是幂等的,StringSet,StringGet) 我问是因为我们正在从ServiceStack迁移到Stac

  • 问题内容: 我正在使用multer将文件保存在通过express&nodejs开发的服务器上。 我使用下面的代码。 Multer会为我将文件保存在指定的目标文件夹中。 所有这些都工作正常,但我有以下问题: 如果文件保存由于各种原因而失败,则看来我的路线将始终返回状态204。 我不确定在保存文件后或异步获取文件时是否取消状态204,是否返回状态204。 问题答案: 您可以使用以下选项处理错误: 如果

  • 我的问题与此类似,没有答案。我试着搜索其他很多地方,但仍然没有答案。 我从上面的代码中删除了,然后再试一次,我现在得到了错误消息,但是下载的文件没有任何内容,它是一个空白数据。 如何下载文件并处理服务返回的错误响应?

  • 问题内容: 我一直在努力解决这个问题,但没有找到一个强有力的答案。我正在尝试使用useMutation挂钩执行登录突变。 TLDR; 我想知道在onError中传递的选项和useMutation给我的错误之间到底有什么区别 这是我的代码段 在服务器端,我有一个用于登录的预设/硬编码电子邮件,并且我没有使用Apollo或任何其他客户端。在此登录突变的解析器中,如果使用的电子邮件不相同,我只会抛出一个