Мне удалось использовать express + Apollo Backend в качестве серверного ПО в Nuxt js. Все работает нормально (аутентификация, кеш, источники данных, запросы, мутации), но теперь я пытаюсь запустить подписки (веб-сокеты) и это доставляет мне затруднения.
Я попробовал этот пример https://www.apollographql.com/docs/apollo-server/data/subscriptions/#subscriptions -with-Additional-Middleware , но даже прослушивание httpServer не помогло.
Это мой файл API, который мне требуется через nuxt.config. js с '~/api/index'
:
module.exports = async () => {
const app = require('express')()
const server = await require("./apollo")() // apollo-server-express w/ typeDefs and resolvers
// apply Apollo to Express
server.applyMiddleware({ app });
console.log(`? ApolloServer ready at ${server.graphqlPath}`);
const httpServer = http.createServer(app);
server.installSubscriptionHandlers(httpServer);
console.log(`? ApolloSubscriptions ready at ${server.subscriptionsPath}`);
return {
path: '/api',
handler: httpServer
}
}
Теперь моя игровая площадка выдает мне эту ошибку: "Could not connect to websocket endpoint ws://192.168.150.98:3000/api/graphql. Please check if the endpoint url is correct."
TypeDefs:
type Subscription {
postAdded: Post
}
type Post {
author: String
comment: String
}
type Query {
posts: [Post]
}
type Mutation {
addPost(author: String, comment: String): Post
}
Resolvers:
Query: {
posts(root, args, context) {
return Posts;
}
}
Mutation: {
addPost(root, args, context) {
pubsub.publish(POST_ADDED, { postAdded: args });
return Posts.add(args);
}
},
Subscription: {
postAdded: {
// Additional event labels can be passed to asyncIterator creation
subscribe: () => pubsub.asyncIterator([POST_ADDED]),
},
}
Первый вопрос здесь, спасибо заранее! :)