当我尝试从Android stomp客户端连接到Spring Boot Web套接字时,它没有连接并且Catalina日志显示
Handshake failed due to invalid Upgrade header: null
Tomcat服务器在Apache后面运行,而Apache服务器在https上运行。 我尚未在Tomcat中添加https 。所有http请求都重定向到https,这就是我尝试连接到网络套接字的方式
mStompClient = Stomp.over(Stomp.ConnectionProvider.JWS, "wss://chat.example.com/ws/chat/websocket", headers);
但是在本地计算机上运行时可以使用
mStompClient = Stomp.over(Stomp.ConnectionProvider.JWS, "http://10.0.2.2:8080/chat/ws/chat/websocket", headers);
这是我的终极终点设置
registry.addEndpoint("/chat").setHandshakeHandler(new HandShakeHandler()).withSockJS();
我已启用mod proxy wstunnel
,并在虚拟主机配置中添加了
ProxyPass / http://localhost:8080/chat/
proxyPassReverse / http://localhost:8080/chat/
ProxyPass /wss/ ws://localhost:8080/chat/
我该如何解决?
答案 0 :(得分:0)
我从this server fault林那里得到了答案。我必须添加
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule /api/(.*) ws://newapp.example.com:8080/api/$1 [P]
并将最后一行更改为
RewriteRule /chat/(.*) ws://localhost:8080/chat/chat/$1 [P]
现在它已连接