我正在开发两个应用程序之间的消息代理通信: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套接字消息发送存在同样的问题?
提前致谢!