Ошибка подписки на Hasura GraphQL Engine, развернутого с Cloudfoundry на AWS - PullRequest
0 голосов
/ 22 марта 2019

Hasura GraphQL Engine развернут на экземпляре Cloudfoundry, поддерживаемом AWS, и предоставляется на поддомен через AWS ELB. Консоль выставлена ​​на https://hasura.cloud.domain.com/console, а API GraphQL принимает запросы на https://hasura.cloud.domain.com/v1alpha1/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 указывает на ошибку с (Opcode -1).

Обычно клиент не может открыть соединение через веб-сокет.

1 Ответ

0 голосов
/ 22 марта 2019

Некоторые балансировщики нагрузки не поддерживают передачу запросов рукопожатия WebSocket, содержащих заголовок Upgrade, на CF-маршрутизатор. Например, Elastic Load Balancer (ELB) Amazon Web Services не поддерживает это поведение. В этом сценарии необходимо настроить балансировщик нагрузки для пересылки трафика TCP на маршрутизатор CF для поддержки WebSockets.

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

По сути, для работы веб-сокетов требуется некоторая конфигурация с AWS ELB и CF Router. Обычно это делается путем настройки нестандартного порта для пересылки всех TCP-подключений к CF-маршрутизатору. Мы узнали от наших клиентов, что этот порт обычно 4443.

Итак, чтобы заставить работать соединения через веб-сокеты, выберите конечную точку как wss://hasura.cloud.domain.com:4443/v1alpha1/graphql для соединений через веб-сокеты и, следовательно, подписки.

Консоль может быть открыта также в https://hasura.cloud.domain.com:4443.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...