问题标签 [graphql-subscriptions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用 Graphene 和 Python 的订阅类示例
我试图弄清楚如何使用 graphene-python 在我的模式中正确定义订阅。到目前为止,我已经实现了查询和突变,但是你如何定义一个Subscription
类?
以下是我最初的想法:
有人可以提供一个小例子吗?任何帮助将不胜感激!谢谢 :)。
布赖恩
graphql - 使用带有 React 和 Apollo 的 graphql 订阅制作实时应用程序
我正在使用 React、Apollo 和 GraphQL 构建一个实时应用程序。我的计划是组件将发出查询,然后依赖订阅来保持客户端缓存与后端数据实时一致。但是,我不相信这会起作用,因为在卸载组件时我将不得不取消订阅。当组件再次挂载时,结果将从查询缓存中获取,因此它们实际上会过期,因为在订阅关闭后发生的所有更改都将丢失。再次打开订阅也意味着结果将变得一团糟,因为两者之间的更改已丢失。
例如,在组件 A 中,如果我有疑问:-
和订阅:-
查询在customers
A 首次挂载时运行。结果被缓存。客户数据的所有更改都在订阅的帮助下记录下来customersUpdated
。请注意,订阅不会返回所有客户,而只会返回需要合并到查询缓存中的更改。卸载 A 时,我取消订阅。假设另一个用户对客户数据进行了 5 次更改,而 A 为我们当前的用户保持卸载状态。当 A 再次挂载时,这 5 个更改已丢失,查询只是从缓存中获取结果。订阅再次开始,但现在数据处于错误状态,因为我们错过了这 5 个更改并且永远不会得到它们!
在这里使用订阅的正确模式是什么?我试图避免使用查询进行基于时间的重新获取,因为我希望应用程序实时工作。同样是实时的,我只想提取更改而不是不必要地提取所有数据。
apollo - Apollo:客户端订阅代码?
这是我的 Apollo 订阅客户端代码,基于 Githunt-React-master 示例代码:
我的订阅解析器没有被调用。也就是说,debugger
放置在其中的语句永远不会停止程序执行。
我错过了什么?
提前感谢所有人提供的任何信息。
aws-lambda - 无服务器 GraphQL 订阅
我最近开始使用 GraphQL,并且能够成功地将其设置在 AWS Lambda 上,从而为我提供了一个“无服务器”架构。但是,我想利用 GraphQL 订阅来获得更多实时功能。
我了解 AWS Lambda 不允许使用 WebSocket,因为连接仅在函数运行或达到超时限制时才会持续。
但是有没有办法设置 GraphQL 后端,以便它可以利用订阅并将其保留在 AWS 服务中,并让它像“无服务器”应用程序一样扩展。
比如使用 AWS Lambda 进行 GraphQL 查询和突变,然后使用不同的 AWS 服务进行 GraphQL 订阅。
javascript - 阿波罗订阅不起作用
我有一个 graphql 服务器,我试图在实体状态更新时触发一个事件。我有一个用于更新实体的突变,用于graphql-subscriptions
发布更新以供订阅者收听。但是,pubsub.subscribe(EVENT_NAME)
选择了更改,但是当我将其集成到订阅解析器中时,它不会触发更新。
为简洁起见,我已经编辑了与问题无关的部分代码。
我的解析器:
我的存储库:
我的架构:
为了测试这一点,我只使用了 graphiql,它可以很好地拾取 websocket 连接。
我已经尝试同时使用article
(如图所示)和发布{ updatedStatus: article }
,但似乎都没有被采纳。
如前所述pubsub.subscribe('updatedStatus')
,确实获得了变化。所以这个问题似乎与订阅解析器有关。
我要关闭以下文档:http ://dev.apollodata.com/tools/graphql-subscriptions/setup.html#setup
reactjs - GraphQL:添加对模式的订阅
我正在尝试使用 GraphQL 和 Relay 设置订阅。我有以下突变,它增加了一个新团队:
这工作正常,但我似乎无法弄清楚如何让我的订阅至少在 GraphiQL 中工作。我的架构中有以下定义:
我不确定如何构建订阅功能,并且似乎找不到足够的文档。当我在 GraphiQL 中运行以下命令时,
我收到以下错误:
Cannot query field team on type Subscription.
谢谢大家的帮助!
graphql - Apollo GraphQL 服务器;设置上下文以处理由触发订阅触发的请求
我了解在创建 GraphQL 服务器时如何设置上下文对象,例如
以便在处理传入请求时将上下文对象传递给我的解析器。
但是,当解析器由订阅触发时,我没有看到此上下文对象(即客户端订阅了 GraphQL 订阅,并定义了订阅触发时要发送给它们的数据的形状);在这种情况下,上下文似乎是一个空对象。
有没有办法确保在 PubSub.publish() 调用之后调用解析器时正确设置我的上下文对象?
graphql - React Apollo 订阅绕过了 graphql 包装器
我有一个名为GraphQL Bookstore的示例应用程序,它创建书籍、出版商和作者并显示它们之间的关系。我正在使用订阅来实时显示更新。
出于某种原因,我的BOOK_ADDED
订阅完全绕过了graphql
包装器。它正在调用包装类,并将books
prop 设置为undefined
. 代码的相关部分如下所示(您可以在此处查看完整代码)。
基本上,当客户端收到订阅通知时,updateQuery()
会调用该函数 - 正如预期的那样。但是,一旦该函数退出,render()
包装类的方法就会被直接调用并books
设置为undefined
。我预计graphql
会调用包装器,在调用render()
方法之前正确设置道具。我错过了什么?
提前致谢!
graphql - 订阅一个 GraphQL 项目
为我的 GraphQL 后端使用 GraphCool,我想知道如何只订阅给定 ID 的单个项目。我一直在查看文档并尝试使用过滤器,但我仍然无法弄清楚。如果我想订阅所有项目突变,我知道我必须这样做:
如何收听具有给定 ID 的项目?
react-native - 中继订阅不适用于 react-native
我正在使用带有 react native 和 Relay 的 Express Graphql 服务器。我的设备确实连接到订阅,但它没有订阅它。这是我在服务器上的 index.js
服务器上订阅的解析器,由于每个人都在使用来自 apolloGraphql 的可执行模式,因此很难弄清楚。
现在是 react-native 客户端。我的订阅设置与中继环境。
我的订阅方式,
我调用订阅的组件,
当设备启动应用程序时,我的设备连接到 Web 套接字,因为我可以在 SubscriptionServer 的 onConnect 方法中看到 console.log 语句。但是当负载在突变后发布时,订阅方法不会被调用。我似乎无法弄清楚我做错了什么。也许这是我缺少的一些 react-native 特定配置,因为当我在 graphiql 上测试它时,一切似乎都运行良好。我找不到与 express graphql 一起使用的 react-native 和中继订阅的任何示例。
注意:当我将订阅与 graphiql 一起使用时,一切正常。但不适用于 react-native 和中继。
提前谢谢各位....