【发布时间】:2020-11-17 22:32:12
【问题描述】:
谁能告诉我如何在 Node 中使用 Express-GraphQL 实现 GraphQL 订阅?
【问题讨论】:
标签: node.js express graphql express-graphql graphql-subscriptions
谁能告诉我如何在 Node 中使用 Express-GraphQL 实现 GraphQL 订阅?
【问题讨论】:
标签: node.js express graphql express-graphql graphql-subscriptions
我一直在研究同样的问题。
我已经阅读了express-graphql 订阅的 GitHub 问题,并且该仓库的成员建议在结束评论中使用 graphql-ws。
这是我的 GitHub 项目 shammelburg/express-graphql-api 的链接,您可以 npm start 加载 grapiql 以测试查询和变异。
为了测试订阅,我创建了一个 Angular 项目,它实现了 graphql-ws 的 observables 示例。 shammelburg/graphql-rxjs-angular
Angular 项目还使用graphql-request 进行查询和突变。
这是一个非常轻量级的解决方案,效果很好。
【讨论】:
我也遇到了同样的问题。我无法在文档中找到明确的解决方案。所以我刚刚改用graphql-yoga。但我确实找到了这个帖子,所以do check it out
【讨论】:
见Authentication and Express Middleware
var express = require('express');
var graphqlHTTP = require('express-graphql');
var { buildSchema } = require('graphql');
var schema = buildSchema(`
type Query {
ip: String
}
`);
const loggingMiddleware = (req, res, next) => {
console.log('ip:', req.ip);
next();
}
var root = {
ip: function (args, request) {
return request.ip;
}
};
var app = express();
app.use(loggingMiddleware);
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}));
app.listen(4000);
console.log('Running a GraphQL API server at localhost:4000/graphql');
【讨论】: