我正在使用带有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上运行
答案 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处理程序。