使用Spring 4 WebSocket从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的客户端接收到一个消息

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

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

相关内容

  • 没有找到相关文章

最新更新