JavaSpring,如何使用WebSocket向连接的客户端广播消息?
我正在尝试在我的应用程序中使用WebSocket。我遵循了本教程: http://spring.io/guides/gs/messaging-stomp-websocket/
它工作得很好
当其中一个连接的客户端按下按钮时,调用此方法:
@MessageMapping("/hello")
@SendTo("/topic/greetings")
public Greeting greeting() throws Exception {
System.out.println("Sending message...");
Thread.sleep(1000); // simulated delay
return new Greeting("hello!");
}
消息将广播到所有连接的客户端
现在我想修改我的服务器应用程序,它将定期(每小时)向所有连接的客户端广播消息,而不需要客户端交互
类似这样的情况(但这显然不起作用):
@Scheduled(fixedRate = 3600000)
public void sendMessage(){
try {
@SendTo("/topic/greetings")
greeting();
} catch (Exception e) {
e.printStackTrace();
}
}
谢谢你的建议
# 1 楼答案
@SendTo
仅在SimpAnnotationMethodMessageHandler
中工作,当从客户端接收到WebSocketMessage
时,它仅通过SubProtocolWebSocketHandler
启动要实现您的需求,您应该将
@Scheduled
服务SimpMessagingTemplate brokerMessagingTemplate
注入到您的@Scheduled
服务中,并直接使用它: