无法连接到Apache背后的Tomcat Web套接字

问题描述 投票:-1回答:1

当我尝试从Android stomp客户端连接到Spring Boot Web套接字时,它没有连接并且Catalina日志显示

Handshake failed due to invalid Upgrade header: null

Tomcat服务器在Apache后运行,Apache服务器在https上运行。我没有在Tomcat中添加https。所有的http请求都被重定向到https这就是我试图连接到websocket的方式

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);

这是我的stomp终点设置

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/

我怎样才能解决这个问题?

java android spring-boot spring-websocket stomp
1个回答
0
投票

我从this server fault lin得到了答案。我必须补充一下

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]

现在它已连接

© www.soinside.com 2019 - 2024. All rights reserved.