Hasura GraphQl引擎上的订阅错误在AWS上使用CloudFoundry部署



hasura graphql引擎部署在由AWS支持的CloudFoundry实例上,它通过AWS ELB在子域中暴露在一个子域中。该控制台在https://hasura.cloud.domain.com/console中暴露在https://hasura.cloud.domain.com/v1alpha1/grapha1/graphql。

但是,当从控制台执行订阅时,JS控制台上的以下日志发生了错误:

vendor.js:1 WebSocket connection to 'wss://hasura.cloud.domain.com/v1alpha1/graphql' failed: Error during WebSocket handshake: Unexpected response code: 200

分析Chrome上的WebSocket帧指示(Opcode -1)的错误。

基本上,客户端无法打开Websocket连接。

某些负载平衡器不支持将升级标头到CF路由器的传递Websocket握手请求。例如,Amazon Web Services(AWS)弹性负载平衡器(ELB)不支持此行为。在这种情况下,您必须配置负载平衡器以将TCP流量转发到CF路由器以支持WebSockets。

参考:https://docs.cloudfoundry.org/adminguide/supporting-websockets.html#config

基本上,AWS ELB和CF路由器需要一些配置才能使Websockets起作用。这通常是通过设置非标准端口将所有TCP连接转发到CF路由器的方法来完成的。我们从客户那里了解到,此端口通常为4443。

因此,要使WebSocket连接进行工作,请选择端点为wss://hasura.cloud.domain.com:4443/v1alpha1/graphql用于WebSocket连接,从而选择订阅。

可以在https://hasura.cloud.domain.com:4443上打开控制台。

最新更新