1

我正在开发 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 套接字消息发送存在相同的问题?

提前致谢!

4

0 回答 0