Spring MVC WebSocket:意外的响应代码:302

时间:2018-09-06 13:07:31

标签: spring-mvc websocket

我的Spring Webapp部署在http://localhost:8080/mycontext。 我正在尝试根据https://www.baeldung.com/websockets-spring

上的示例设置简单的网络套接字通信

我设置了一个gcloud alpha resource-manager liens list类,如下所示:

WebSocketConfig

和我的客户端页面(使用javascript)执行以下操作:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/chat").setHandshakeHandler(new DefaultHandshakeHandler(new TomcatRequestUpgradeStrategy())).withSockJS();
    }
} 

问题是,尝试建立连接时,我的Chrome控制台显示以下内容:

function connect() {
    require([ 'SockJSlib' ], function(SockJS) {
        var socket = new SockJS('http://localhost:8080/mycontext/chat');
        stompClient = Stomp.over(socket);  
        stompClient.debug = function(str) {
            console.debug(str + "\n");
        }
        stompClient.connect({}, function(frame) {
            //do things I need to do when connected
        });
    });
}

我一直在这里阅读有关SO和其他地方的各种帖子。他们中的一些建议设置WebSocket connection to 'ws://localhost:8080/mycontext/chat/499/3ddwpqq2/websocket' failed: Error during WebSocket handshake: Unexpected response code: 302 POST http://localhost:8080/mycontext/chat/096/s1figjsq/xhr_streaming?t=1536238976679 403 (Forbidden) EventSource's response has a MIME type ("text/html") that is not "text/event-stream". Aborting the connection. POST http://localhost:8080/mycontext/chat/096/onuq0m1f/xhr?t=1536238977361 403 (Forbidden) (我没有做任何更改)。其他人建议在定义端点时使用DefaultHandshakeHandler,但是我无法做到这一点,因为我停留在Spring 4.1.0上,并且该版本的spring websocket没有实现该方法。

如果我在浏览器中连接到setAllowedOrigins("*"),则会收到“欢迎使用SockJS”,因此服务器部分看起来正在运行。

如果真正的问题隐藏在302错误或403错误之后,我有点困惑。我暂时授权http://localhost:8080/mycontext/chat URL不安全:

/chat/**

但这不会使错误消失。

在这里,我有点不知所措。知道我错过了什么/做错了什么吗?

谢谢。

0 个答案:

没有答案