ParseLiveQuery 依赖于 Websockets。更一般地讲,这个问题可能是关于如何让 Web 套接字在 AWS ELB 后面工作。
我正在使用在 AWS 中使用 Elastic Beanstalk (EB) 配置的新 Parse Server。EB 在负载均衡器后面配置 EC2 实例,我们需要自动扩展才能工作。Parse Server 运行良好。
我正在配置我们的服务器以使用使用 WebSockets 的新 Parse Live Query 实现。
- 本地一切正常。
- 如果我将 LiveQueryClient 直接连接到我们的某个 ParseServer 实例的公共 DNS,我的 iOS 客户端应用程序将连接并运行。例如
http://ec2-xx-xx-xx-xx.compute-1.amazonaws.com
- 但是,我不太明白为什么我们的 LiveQuery 代码无法通过负载均衡器 DNS 条目工作。例如
http://parseserver-xxxxxx-env.us-east-1.elasticbeanstalk.com
如果我将客户端指向负载均衡器,则会收到 404 错误:
Error Domain=SRWebSocketErrorDomain Code=2132 "received bad response code from server 404"
答案1
如果它在本地工作 - 例如绕过 LB,那么我猜想 LB 未配置为将请求传递到该端口上的后端服务器。您的 LB 将需要一些新规则来根据您的服务正在监听的目标端口将流量路由到您支持的主机,有关这方面的更多帮助,请参阅 AWS
不过,AWS ELB 似乎并未正式支持 websockets,因此你可能需要使用当前的解决方法之一 https://forums.aws.amazon.com/thread.jspa?messageID=589328