我想将消息从Java推送到WebSocket客户端。我已经成功地将js客户端发送到服务器,并在2个js客户端上收到了一条消息,因此客户端代码可以正常工作。
我的问题是,当Java应用程序中发生事件时,我想启动发送。因此,例如,每次下达10个订单时,都会向所有订阅的客户发送一条消息。这可能吗?
我当前的配置:
<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"); } }
我想要做的是这样的:
public class OrderManager { @Autowired MessageController messageController; int orderCount = 0; public void processOrder(Order o) { orderCount++; if(orderCount % 10 == 0) messageController.greeting(); } }
并且所有订阅了Websocket的客户端都会收到一条消息。
您可以使用SimpMessagingTemplate.它的自动注册。只要autowire您想要的任何Spring bean中都可以。
SimpMessagingTemplate.
autowire
@Autowired private SimpMessagingTemplate template; ... this.template.convertAndSend("/topic/greetings", text);