У меня есть приложение Spring Websocket Stomp, которое принимает запросы SUBSCRIBE.
В приложении у меня есть обработчик для SUBSCRIBE, то есть
@Component
public class SubscribeStompEventHandler implements ApplicationListener<SessionSubscribeEvent> {
@Override
public void onApplicationEvent(SessionSubscribeEvent event) {}
}
который я использую для проверки подписки.
Я бы проверил что-нибудь в onApplicationEvent и отправил сообщение STOMP ERROR обратно клиенту из этой функции.
Я нашел этот рецепт Как отправить сообщение об ОШИБКЕ на Клиенты STOMP с Spring WebSocket? но мне нужно понять, как получить outboundChannel.
Я пробовал также следующий код:
public void sendStompError(SimpMessagingTemplate simpMessagingTemplate, String sessionId, String topic, String errorMessage) {
StompHeaderAccessor headerAccessor = StompHeaderAccessor.create(StompCommand.ERROR);
headerAccessor.setMessage(errorMessage);
headerAccessor.setSessionId(sessionId);
headerAccessor.setLeaveMutable(true);
simpMessagingTemplate.convertAndSendToUser(sessionId, topic, new byte[0], headerAccessor.getMessageHeaders());
}
и я попытался сделать тему какой-то темой подписки и темой /queue/error. Однако я не видел, чтобы сообщения передавались клиенту.
В клиенте я использую:
stompClient.connect(headers
, function (frame) {
console.log("Conn OK " + url);
}, function (error) {
console.log("Conn NOT OK " + url + ": " + JSON.stringify(error));
});
}
и моя цель состоит в том, чтобы вызвать функцию (ошибку), когда я отправляю STOMP ERROR.
Пожалуйста, посоветуйте мне, как именно я могу отправить правильную STOMP ERROR, например. путем получения Outboundchannel.