我正在开发 2 个应用程序之间的消息代理通信:Grails 客户端和 Spring Boot 微服务。为了让我的客户端以长轮询方式更新,我使用了 WebSockets。
我已成功配置 Grails 和 Spring Boot 以通过 RabbitMQ 代理使用 Web 套接字。Grails 客户端按预期从 Spring Boot 获取所有发布。
但是我在将消息从 Grails 端的 JS 代码发送到服务器端的 Spring Boot 处理程序时遇到了问题。
我遵循以下所有默认配置:https ://github.com/zyro23/grails-spring-websocket/blob/010ea1fb3557a63b6ce0d87a0b055f6cbc7df319/README.md
我以前在 Spring Boot 端编写的相同配置:
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableStompBrokerRelay("/topic", "/queue")
.setRelayHost(brokerRelayHost)
.setSystemLogin(brokerRelayUsername)
.setSystemPasscode(brokerRelayPassword)
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/stomp").withSockJS()
}
我的客户代码调用:
client.send("/app/hello", {}, JSON.stringify("world"));
但是注释@MessageMapping("/hello")
不适用于我的 Spring 引导处理程序方法。
另一件奇怪的事情是,当我启用具有相同注释的 Grails 处理程序时,它们运行良好并接收所有消息。
我已经监视了 RabbitMQ 管理控制台,并且似乎在 Spring Boot 处理程序客户端从不向代理发送消息的情况下。
是否有人发现跨应用程序 Web 套接字消息发送存在相同的问题?
提前致谢!