SUBSCRIBE リクエストを受け入れる Spring Websocket Stomp アプリケーションがあります。
アプリケーションには、SUBSCRIBE のハンドラーがあります。つまり、
@Component
public class SubscribeStompEventHandler implements ApplicationListener<SessionSubscribeEvent> {
@Override
public void onApplicationEvent(SessionSubscribeEvent event) {}
}
サブスクリプションを検証するために使用します。
onApplicationEventで何かをチェックし、この関数から STOMP ERROR メッセージをクライアントに送り返します。
このレシピを見つけましたSpring WebSocketでエラーメッセージをSTOMPクライアントに送信する方法は? しかし、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 を送信したときに function(error) を呼び出すことです。
Outboundchannel を取得するなどして、適切な STOMP ERROR を正確に送信する方法を教えてください。