Ich verwende Web-Sockets mit Spring.Spring Web Socket - Benachrichtigen Sie den Client über den MQ-Listener
Hier ist mein Controller. Ein einfacher Controller, der ein Ergebnisobjekt akzeptiert und ein Ergebnisobjekt mit aufgefüllten Werten zurückgibt. Es würde eine Nachricht an die STOMP-Thema-Abonnenten "/ topic/update" veröffentlichen.
@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;
}
}
My Spring-Konfigurationsdatei:
@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");
}
}
Ich habe den folgenden Code in Javascript, die ein STOMP WebSocket-Client erstellt. Es ist Abonnement des ‚/ Thema/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);
});
});
Jetzt plane ich einen Listener (java und nicht in JavaScript) hinzuzufügen, die auf die Kaninchen MQ-Nachricht hören würde, ich will Objekt die Nachricht zu übergeben mein Controller und push alle die Nachricht an die Web-Socket-Clients.
Ich weiß nicht, wie ich alle meine Web-Socket-Clients benachrichtigen soll, wenn die Nachricht bei meinem MQ-Listener angekommen ist. Wie werde ich das tun?
Ist es eine gute Möglichkeit, eine Instanz des Berichts-Controllers zu erstellen und pushMessage aufzurufen, um alle meine Web-Socket-Clients zu benachrichtigen.
Auch ich bin mir nicht sicher, ob das funktioniert. Ich werde das versuchen. Ich möchte wissen, ob es einen besseren Ansatz gibt.
Gibt es einen besseren Ansatz oder einen besseren Weg, dies zu tun?