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

提前致谢!