Socket.io代码200 WebSocket握手期间出错

时间:2017-05-19 00:33:58

标签: socket.io apache2

我正在使用带有nodejs的 socket.io 和一个 apache 服务器。 我收到代码 200 作为回复,我知道我必须 101

  

WebSocket连接到   'WSS://SITEABC.com/socket.io/网站ID = site1234567&安培; EIO = 3及运输= WebSocket的'   失败:WebSocket握手期间出错:状态行无效

apache上的配置如下:

RewriteCond %{HTTP:Upgrade} ^Websocket [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://localhost:1337/{REQUEST_URI} [P]

RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]

ProxyPass / http://localhost:1337/
ProxyPassReverse / http://localhost:1337/
ProxyPass /socket.io/ http://localhost:1337/socket.io/

节点正在端口1337上运行

2 个答案:

答案 0 :(得分:2)

我使用springboot 2 +踩踏。 就我而言,原因是在WebSocketConfig中,必须删除.withSockJS

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws").setAllowedOrigins("*")
                .addInterceptors(new HandshakeInterceptor())

                //--> important must remove,or 200 error.
                //.withSockJS()

                ;
    }

答案 1 :(得分:1)

这意味着您的请求不会被代理到您的WebSocket处理程序,而是用于返回200的其他路由。

您应该检查您的WebSocket处理程序。