Push-Nachricht von Java mit Spring 4 WebSocket
Ich möchte Nachrichten von Java an WebSocket-Clients senden. Ich habe einen js-Client erfolgreich veranlasst, eine Nachricht an den Server zu senden und auf 2 js-Clients zurück zu empfangen, sodass der clientseitige Code einwandfrei funktioniert.
Mein Problem ist, dass ich einen Sendevorgang einleiten möchte, wenn Ereignisse in der Java-App auftreten. So wird beispielsweise jedes Mal, wenn 10 Bestellungen eingegangen sind, eine Nachricht an alle abonnierten Kunden gesendet. Ist das möglich?
Meine aktuelle Konfiguration:
<websocket:message-broker application-destination-prefix="/app">
<websocket:stomp-endpoint path="/hello">
<websocket:sockjs/>
</websocket:stomp-endpoint>
<websocket:simple-broker prefix="/topic"/>
</websocket:message-broker>
@Controller
public class MessageController {
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting() throws Exception {
return new Greeting("Hello world");
}
}
Was ich tun möchte, ist ungefähr so:
public class OrderManager {
@Autowired MessageController messageController;
int orderCount = 0;
public void processOrder(Order o) {
orderCount++;
if(orderCount % 10 == 0)
messageController.greeting();
}
}
und alle am Websocket angemeldeten Clients erhalten eine Nachricht.