使用 Express-GraphQL 的 GraphQL 订阅
Posted
技术标签:
【中文标题】使用 Express-GraphQL 的 GraphQL 订阅【英文标题】:GraphQL Subscriptions using Express-GraphQL 【发布时间】:2020-11-17 22:32:12 【问题描述】:谁能告诉我如何在 Node 中使用 Express-GraphQL 实现 GraphQL 订阅?
【问题讨论】:
【参考方案1】:我一直在研究同样的问题。
我已经阅读了express-graphql
订阅的 GitHub 问题,并且该仓库的成员建议在结束评论中使用 graphql-ws
。
这是我的 GitHub 项目 shammelburg/express-graphql-api 的链接,您可以 npm start
加载 grapiql 以测试查询和变异。
为了测试订阅,我创建了一个 Angular 项目,它实现了 graphql-ws
的 observables 示例。 shammelburg/graphql-rxjs-angular
Angular 项目还使用graphql-request
进行查询和突变。
这是一个非常轻量级的解决方案,效果很好。
【讨论】:
【参考方案2】:我也遇到了同样的问题。我无法在文档中找到明确的解决方案。所以我刚刚改用graphql-yoga。但我确实找到了这个帖子,所以do check it out
【讨论】:
【参考方案3】:见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');
【讨论】:
以上是关于使用 Express-GraphQL 的 GraphQL 订阅的主要内容,如果未能解决你的问题,请参考以下文章
Graphql 突变查询不适用于 express-graphql
Express-graphql“在运行突变和查询时无法使用 mongodb 读取未定义的属性‘集合’”