У меня есть два приложения Spring Boot WebSocket, использующие STOMP:
- Сервер WebSocket
- Клиент WebSocket
Я могу отправить сообщение WebSocket с клиент и ответить на него с сервера. Однако теперь я хотел бы отправить клиенту сообщение WebSocket, инициированное событием на стороне сервера.
Может кто-нибудь сказать мне, как это сделать?
Вот что у меня есть теперь на стороне сервера:
WebSocketConfig. java:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic/");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/alarm");
}
}
WebSocketController. java:
@Controller
public class WebSocketController {
@MessageMapping("/alarm")
@SendTo("/topic/message")
public void processMessageFromClient(@Payload String message, Principal principal) throws Exception {
System.out.println("WEBSOCKET MESSAGE RECEIVED" + message);
}
@RequestMapping(value = "/start/{alarmName}", method = RequestMethod.POST)
public String start(@PathVariable String alarmName) throws Exception {
System.out.println("Starting " + alarmName);
/* SEND MESSAGE TO WEBSOCKET CLIENT HERE */
return "redirect:/";
}
}