gpt4 book ai didi

html - Spring Web Socket - 从 MQ Listener 通知客户端

转载 作者:行者123 更新时间:2023-11-27 23:28:42 24 4
gpt4 key购买 nike

我正在使用 Spring 的网络套接字。

这是我的 Controller 。一个简单的 Controller ,它将接受一个结果对象并返回一个带有填充值的结果对象。它会向 STOMP 主题订阅者“/topic/update”发布消息。

@Controller
public class ReportController {

@MessageMapping("/charthandler")
@SendTo("/topic/update")
public Result pushMessage(Result r) throws Exception {
Thread.sleep(3000); // simulated delay
Result result = new Result();
result.setTitle("ChartsPage");
return result;
}

}

我的 Spring 配置文件:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/charthandler").withSockJS();
}

@Bean
public WebSocketHandler chartHandler() {
return new ChartHandler();
}

@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}

}

我在 javascript 中有以下代码,它创建了一个 STOMP Web 套接字客户端。它正在订阅“/topic/update”

var socket = new SockJS('/reportapplication/charthandler/');
stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/update', function(result) {
console.log(JSON.parse(result.body).title);
});
});

现在我计划添加一个监听器(java 而不是 javascript)来监听 Rabbit MQ 消息,我想将消息对象传递到我的 Controller 并将所有消息推送到 Web 套接字客户端。

当消息到达我的 MQ 监听器时,我不确定如何通知我所有的网络套接字客户端。我该怎么做?

创建报表 Controller 实例并调用 pushMessage 通知我所有的网络套接字客户端是一种好方法吗?

ReportController controller = new ReportController();
controller.pushMessage(report);

我也不确定这是否有效。我会试试的。我想知道是否有更好的方法。

是否有更好的方法或更好的方式来做到这一点?

最佳答案

也许如果您查看 Artem Bilan 对以下问题提供的答复:Spring, how to broadcast message to connected clients using websockets?

因此,如果您的 Rabbit MQ 消息的 java 监听器在服务中,那么您可以在同一服务中执行以下操作并调用标记为 WS 通知端点的 sendTo 并将预期的消息传递给正在监听的 WS 客户端。

@Autowired
private SimpMessagingTemplate brokerMessagingTemplate;
.......
this.brokerMessagingTemplate.convertAndSend("/topic/greetings", "foo");

关于html - Spring Web Socket - 从 MQ Listener 通知客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37051669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com