【问题标题】:Spring + WebSocket Error 400Spring + WebSocket 错误 400
【发布时间】:2017-08-12 10:50:03
【问题描述】:

我在连接套接字时遇到问题。

这是我在浏览器上遇到的错误。 socket error

这是我的弹簧插座配置

@EnableWebSocketMessageBroker
public class ChatSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

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

    /**
     * Register the endpoint where the socket will call to connect
     */
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/chat-connect").setAllowedOrigins("*").withSockJS();
    }

我正在使用 sockjs-client v1.0.3,在 tomcat 8 中运行 java 应用程序,在 aws 上运行 linux ec2。

关于如何解决这个问题的任何帮助?

已编辑

在服务器上,我看到的唯一日志是“Handshake failed due to invalid Upgrade header: null”

【问题讨论】:

    标签: spring sockets websocket


    【解决方案1】:

    检查您的 Apache httpd.conf 以确保您的重定向没有导致问题。

    你应该有如下内容:

    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /(.*)           ws://localhost:8080/$1 [P,L]
    RewriteCond %{HTTP:Upgrade} !=websocket [NC]
    

    您是否在 WS 和 WSS 中看到了这一点?

    另一种可能性,尤其是当您尝试与安全套接字通信时,您的 Apache 代理正在尝试处理安全性,同时将不安全的内容传递给您的服务。这将干扰将 http 连接升级到 websocket 的握手,因为一旦它是 websocket,Apache 就会被绕过。相反,您应该将套接字转移到服务器上的安全端口(例如 Tomcat 或任何托管 websocket 服务器的端口),并让您的服务器处理升级。

    【讨论】:

      猜你喜欢
      • 2015-01-13
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      相关资源
      最近更新 更多