Подписка на Meteor + Apollo: соединение с Websocket закрыто - PullRequest
0 голосов
/ 17 мая 2018

Я использую метеор и пытаюсь заставить подписки Apollo работать, но я получаю

WebSocket connection to 'ws://127.0.0.1:3000/sockjs/401/m892wugm/websocket' failed: Connection closed before receiving a handshake response в клиенте.

Я следовал руководству apollographql.com для Конфигурация сервера и Конфигурация клиента , но я пока не совсем уверен, как подключить клиента к серверу.

В клиенте я использую ApolloClient и ApolloLink для передачи Метеор аутентификации в GraphQL.

Вот код:

Клиент

import { ApolloClient } from 'apollo-client'
import { createHttpLink } from 'apollo-link-http'
import { InMemoryCache } from   'apollo-cache-inmemory'
import { ApolloLink } from 'apollo-link'

const httpLink = new createHttpLink()
const authLink = new ApolloLink((operation, forward) => {
  operation.setContext(() => ({
    headers: { 'meteor-login-token': Accounts._storedLoginToken() },
  }))
  return forward(operation)
})

export default ApolloClient = new ApolloClient({
  link: authLink.concat(httpLink),
  cache: new InMemoryCache(),
})

Сервер

createApolloServer({
  schema,
  tracing: true,
  cacheControl: true,
})

new SubscriptionServer({
  schema,
  execute,
  subscribe,
}, {
  server: WebApp.httpServer,
  path: '/subscriptions',
})

Package.json (не все, конечно)

Meteor 1.6.1.1
...
"apollo-client": "^2.2.5",
"apollo-link": "^1.2.1",
"apollo-link-context": "^1.0.7",
"apollo-link-http": "^1.5.3",
"apollo-link-ws": "^1.0.8",
"subscriptions-transport-ws": "^0.9.9",
...

Я прочиталгде-то, что передача noServer : true для SubscriptionServer () разрешает конфликт.Ошибка действительно исчезает, но подписка, похоже, тоже не работает.

И да, я следовал руководству Meteor Integration от apollographql, но информация там устарела ине работает.

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