我有支持Spring Websocket的Spring服務器。我想用STOMP子協議來處理在網絡套接字通信,所以STOMP端點的配置看起來如下:沒有SockJS/StompJS的Spring STOMP服務器
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/chat")
.setAllowedOrigins("*")
.withSockJS();
}
}
Spring文檔和基本的話題我能找到展示瞭如何任何資源使用SockJS + StompJS創建STOMP客戶端。它的工作原理,但據我所知,它根本不需要 - 因爲STOMP只是一個子協議,我應該能夠使用STOMP消息語法基本上從任何Web套接字客戶端與我的服務器進行通信。
假設我只是想從Google Chrome簡單網絡套接字客戶端插件連接到我的STOMP服務器。根據STOMP規範,我所做的第一件事是打開網絡套接字連接。我
WS做到這一點://my.server.here/chat/websocket
鏈接。這部分工作和我的連接建立。現在我想使用STOMP。同樣作爲STOMP規範說我現在應該發送CONNECT命令,如下所示(STOMP 1.1):
CONNECT
accept-version:1.0,1.1
host:my.host.here
^@
然後,我希望從與所連接的命令服務器的響應,但我什麼也沒得到。如果不是「CONNECT」,我會使用一些不存在的命令,比如「WRONG_COMMAND」,那麼我可以看到有關未知命令的Spring異常,所以我想我的消息觸及Spring的Websocket內部,但我無法得到任何回報。如果這可行,我希望使用後續的SEND,SUBSCRIBE等命令來執行操作。
這種工作流程甚至可能嗎?我做錯了什麼,或者我錯誤地解決了整個想法和它的工作方式?
你解決了這個問題嗎? – sjbwylbs
我沒有用Google Websocket客戶端解決它,但是我使用了不使用SockJS的移動應用程序。我發佈了完整的答案和更詳細的說明。隨意問你是否還有其他問題。 – Plebejusz