На самом деле у меня была такая же проблема, и я обнаружил, что она связана с тем, как запускался мой порт сервера и как у меня был настроен провайдер Apollo на моем FE. Обратите внимание, что ws не работал, и мне также требовалось, чтобы wss работал. Я не направлял что-либо на конкретный URL-адрес, как вы с /subscriptions. Вместо этого я просто использовал любой URI, который Heroku / localhost предоставил мне
Код сервера GraphQLServer:
const server = new GraphQLServer({
typeDefs,
resolvers,
context: { pubsub, endpoint: "/" },
});
Начальный код сервера:
server.start(({ port }) => {
console.log(`Server listening on ${port} for incoming requests`);
});
Конфигурация провайдера FE Apollo
const httpLink = new HttpLink({
uri: "https://domainName.herokuapp.com,
});
const wsLink = new WebSocketLink({
uri: "wss://domainName.herokuapp.com/",
options: {
reconnect: true,
},
});
const splitLink = split(
({ query }) => {
const definition = getMainDefinition(query);
return (
definition.kind === "OperationDefinition" &&
definition.operation === "subscription"
);
},
wsLink,
httpLink
);
const client = new ApolloClient({
link: splitLink,
uri: "https://domainName.herokuapp.com",
cache: new InMemoryCache({
addTypename: false,
}),
});
Надеюсь, это поможет вам и поможет вам двигаться вперед. я потратил полдня на то, чтобы разобраться. Я предполагаю, что для вас может быть такая же ситуация, но немного отличается от вашей ситуации. Удачного кодирования !!!
person
Bobbylee Ingalls
schedule
12.11.2020