一尘不染

使用Spring 4 WebSocket从Java推送消息

java

我想将消息从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的客户端都会收到一条消息。


阅读 230

收藏
2020-12-03

共1个答案

一尘不染

您可以使用SimpMessagingTemplate.它的自动注册。只要autowire您想要的任何Spring bean中都可以。

@Autowired
private SimpMessagingTemplate template;
...
this.template.convertAndSend("/topic/greetings", text);
2020-12-03