【发布时间】:2019-07-14 14:44:15
【问题描述】:
当我尝试从 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);
这是我的跺脚端点设置
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/
我该如何解决这个问题?
【问题讨论】:
-
能否请您检查您的生产服务器是否安装为 ELB。因为 web socket 不能在 ELB 上工作,所以你需要安装 ALB。
-
@NileshKumar,感谢您的快速回复。对不起,我不是服务器专家,请您告诉 ELB 和 ALB 是什么?
-
对不起,服务器在数字海洋上运行
-
能否请您检查一下您的数字海洋服务器上是否安装了ELB。digitalocean.com/docs/networking/load-balancers
标签: java android spring-boot spring-websocket stomp