我想将消息从 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 中。
@Autowired
private SimpMessagingTemplate template;
...
this.template.convertAndSend("/topic/greetings", text);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)