我有一個接受SUBSCRIBE請求的Spring Websocket Stomp應用程序。從Spring Websocket程序發送STOMP ERROR
在應用我有一個訂閱處理,也就是
@Component
public class SubscribeStompEventHandler implements ApplicationListener<SessionSubscribeEvent> {
@Override
public void onApplicationEvent(SessionSubscribeEvent event) {}
}
,我用它來驗證訂閱。
我會檢查onApplicationEvent中的內容,並從此函數發回STOMP ERROR消息給客戶端。
我發現這個配方How to send ERROR message to STOMP clients with Spring WebSocket?但我需要了解如何獲取出站通道。
我也試過下面的代碼:
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());
}
,我試圖話題是一些subsciption話題和/隊列/錯誤的話題。但是我沒有看到消息傳播到客戶端。
在客戶端,我用:
,我的目標是有功能(錯誤)調用時我送STOMP錯誤。
請指教我如何發送適當的STOMP ERROR,例如通過獲取Outboundchannel。
工作就像一個魅力。 –
Artem,請你澄清一下:STOMP ERROR總是關閉連接?我正在得到這個效果。代碼1002. –
請參閱和更新我的答案。 –