WebSocket使用中Stomp Client连接报ERROR CODE 200的解决办法
生活随笔
收集整理的這篇文章主要介紹了
WebSocket使用中Stomp Client连接报ERROR CODE 200的解决办法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近在做一個WebSocket項目,后臺使用了Stomp協議的WebSocketConfigurer,但是前端在測試的時候,發現一個很奇怪的問題:
本地的測試代碼,最初我使用了Java+SockJS實現:
@Configuration @EnableWebSocketMessageBroker public class WebSocketStompConfig implements WebSocketMessageBrokerConfigurer {@Overridepublic void registerStompEndpoints(StompEndpointRegistry registry) {registry.addEndpoint("/density").setAllowedOrigins("*") //解決跨域問題 .withSockJS();}@Overridepublic void configureMessageBroker(MessageBrokerRegistry config) {config.enableSimpleBroker("/topic");} }?
var url = "http://172.18.171.167:8080/density" var socket = new SockJS(url) var stompClient = Stomp.over(socket)這種情況下自測可以通過
但是前端反應,SockJS不支持同時打開多個Socket訂閱(我也不清楚到底是否真實,懶得追究了),于是需要研究如何在前端通過原生WebSocket的方式而不是SockJS的方式建立客戶端(BTW 我一直覺得這是前端的活兒,我也不明白我一個后端為什么要搞這個)
按照網上的教程,寫了如下的代碼:
var stompClient = Stomp.client('ws://172.18.171.167:8080/density');stompClient.connect({}, function (frame) {setConnected(true);console.log('Connected:' + frame);stompClient.subscribe('/topic/callback', function (response) {showCallback(response.body);});});但是這時無論如何,前端都會報如下的錯誤:
failed: Unexpected response code: 200試了很多種方法,但是都沒法兒解決問題,最終在Stack Overflow的一個回答下面的Comment里面找到答案:
將原來的URL
ws://172.18.171.167:8080/density/改為
ws://172.18.171.167:8080/density/websocket生效!!!
具體為什么,我也不知道。。。Orz
轉載于:https://www.cnblogs.com/chrischeng/p/10237523.html
總結
以上是生活随笔為你收集整理的WebSocket使用中Stomp Client连接报ERROR CODE 200的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从零开始的全栈工程师——html篇1.6
- 下一篇: 斐波那契数列 (C#)