我正在使用以下命令创建简单的 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(使用前将#替换为@)