我使用spring-websocket和spring-messaging(版本4.2.2.RELEASE)通過具有全功能代理的websockets實現STOMP(Apache ActiveMQ 5.10.0 )。
我的客戶是指訂閱僅限目的地 - 那就是他們不應該應該能夠發送消息。此外,我想對我的客戶可以訂閱的目的地實施更嚴格的控制。在這兩種情況下(即當客戶端試圖將消息發送或訂閱一個無效的目的地)我想能夠如何在彈簧服務器上關閉STOMP websocket
- 發送一個適當的錯誤,和/或
- 關閉的WebSocket
請注意,我的所有目標被轉發到ActiveMQ的。我以爲我可以實現對入站通道ChannelInterceptor,但看着我無法弄清楚如何實現我想要的API。這是否可能,以及驗證客戶端請求的最佳方法是什麼? 我的WebSocket配置低於:
<websocket:message-broker
application-destination-prefix="/app">
<websocket:stomp-endpoint path="/pushchannel"/>
<websocket:stomp-broker-relay relay-host="localhost"
relay-port="61613" prefix="/topic"
heartbeat-receive-interval="300000" heartbeat-send-interval="300000" />
<websocket:client-inbound-channel>
<websocket:interceptors>
<bean class="MyClientMessageInterceptor"/>
</websocket:interceptors>
</websocket:client-inbound-channel>
</websocket:message-broker>
然而,這是一個好主意,1)您如何使用SimpMessagingTemplate發送STOMP ERROR幀?和2)你如何撕裂-ff /關閉websocket? – Nenad
@Nenad更新了答案,嘗試第二部分,並讓我知道它是否有效。 – Karthik
@Kathrik如果我把比我將放棄線程的控制和不能夠做一個分離異常。你知道是否有一種方法發送錯誤幀沒有拋出異常? – Nenad