Как настроить ApolloServer и SubscriptionServer для использования http и ws в graphql - PullRequest
1 голос
/ 29 мая 2020

Я следил за документами для здесь и здесь , чтобы реализовать плагин subscriptions-transport-ws. Моя большая путаница заключается в различении URL-адресов graphql для http:// и ws://. В приведенных выше примерах похоже, что ApolloServer заменяется SubscriptionServer. Но если я хочу использовать веб-сокеты только в особых случаях, разве мне не нужны оба? Или SubscriptionServer обрабатывает и то, и другое одновременно и выполняет какую-то магию c в фоновом режиме, которая определяет, какой из них использовать, в зависимости от того, вызвана ли подписка?

1 Ответ

1 голос
/ 20 июля 2020

apollo-server объединяет несколько инструментов, таких как: graphql-tools , graphql-subscriptions , graphql-upload , предоставляют некоторые пользовательские ошибки и используйте веб-фреймворк express. js в качестве реализации веб-сервера по умолчанию.

subscriptions-transport-ws - это сервер и клиент GraphQL WebSocket для облегчения запросов GraphQL, изменений и т.д. и подписки через WebSocket.

subscriptions-transport-ws - это расширение для GraphQL, и вы можете использовать его с любым клиентом и сервером GraphQL (не только Apollo).

Итак, ApolloServer - это НЕ заменено на SubscriptionServer.

Без использования ApolloServer вам необходимо настроить HTTP-сервер GraphQL, используя express.js, graphqlExpress, graphiqlExpress, cors промежуточное ПО самостоятельно. Как этот официальный образец делает.

Если вы хотите создать сервер подписки, вам необходимо создать HTTP-сервер и передать его конструктору SubscriptionServer для инициации и подключения сервера WebSocket на http

...