zoukankan      html  css  js  c++  java
  • WebSocket使用中Stomp Client连接报ERROR CODE 200的解决办法

    【转】

    https://www.cnblogs.com/chrischeng/p/10237523.html

    最近在做一个WebSocket项目,后台使用了Stomp协议的WebSocketConfigurer,但是前端在测试的时候,发现一个很奇怪的问题:

    本地的测试代码,最初我使用了Java+SockJS实现:

    复制代码
    @Configuration
    @EnableWebSocketMessageBroker
    public class WebSocketStompConfig implements WebSocketMessageBrokerConfigurer {
    
        @Override
        public void registerStompEndpoints(StompEndpointRegistry registry) {
            registry.addEndpoint("/density")
                    .setAllowedOrigins("*") //解决跨域问题
                    .withSockJS();
        }
    
        @Override
        public void configureMessageBroker(MessageBrokerRegistry config) {
            config.enableSimpleBroker("/topic");
        }
    }
    复制代码
    1
    2
    3
    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

  • 相关阅读:
    Greedy Gift Givers 贪婪的送礼者
    USACO 1.1.3 Friday the Thirteenth 黑色星期五
    Prime Matrix(暴力出奇迹)
    博弈论
    好车牌
    C语言中动态内存的分配(malloc,realloc)
    Saruman's Army(贪心)
    Python练习——循环2
    Fox and Number Game
    Repair the Wall (贪心)
  • 原文地址:https://www.cnblogs.com/exmyth/p/11493752.html
Copyright © 2011-2022 走看看