问题标签 [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.
graphql - Apollo 2.x:订阅解析器未触发?
SO上有很多帖子可以搜索Apollo Subscription Resolver Never Activates?
,包括我从2017年6月开始的一篇。从那时起,我的订阅服务运行良好,持续了好几个月。但那是 Apollo 1.x,现在有了 Apollo 2.x,我也遇到了类似的异常情况。
旧的 SO 帖子似乎无法解决此异常。在过去的几天里,我一直在浏览它们,并试图确保我正在做文档和文章所说的所有事情,但它还没有完全奏效。
为了完整起见,我提供了所有相关代码。
服务器设置
客户端设置
类型
查询
解析器
突变解析器中的行pubsub.publish...
运行,但订阅解析器从未激活。
我错过了什么?
更新
我必须修改在我的客户端查询组件中设置订阅的方式。当我发现更多时,我会更新这篇文章。
rx-java - Spring boot graphql-java,订阅和流监听器
我正在尝试从流式侦听器响应中创建一个 observable,但无法这样做。我对 EventObservable 和 Reactive Java 的想法很陌生。如果有人可以查看我的代码以查看它是否以正确的方式构建以及我对这个概念的理解是否走在正确的道路上,那将会很有帮助。
graphql - 使用石墨烯中继创建订阅
我是 graphQL 石墨烯(python)的新手。我想知道是否可以使用石墨烯创建订阅根类型。谢谢
graphql - graphql-subscriptions withFilter 返回未定义;没有变量的订阅工作正常
我试图了解graphql-subscriptions 和withFilter。没有变量的订阅按预期工作,但如果我尝试使用 withFilter,我只会得到“订阅字段必须返回 Async Iterable。当我尝试运行订阅时收到:未定义的错误。
我在设置 withFilter 时做错了什么,是与我正在使用的包不兼容,还是我在这里完全遗漏了一些明显的东西?所有查询和突变都可以正常工作,因此基本设置应该没问题。
我的设置与此类似(所有代码片段都在https://gist.github.com/aqmattil/41e10e7c9f30b8ea964cecdc61c58f20
包.json
突变
订阅
我正在使用 graphiql 运行查询,
vue.js - Vue / Apollo:如何更新新的订阅消息?
我一直在尝试让 Vue + Apollo 与我的 GraphQL 服务器一起工作,除了订阅部分之外,它就像一个魅力。
我在用着
如示例中所示(如此处)。
新的subscriptionData
到了,但我不知道如何将它与组件合并data.foo
。
所有的例子都使用previous.foo
,但我previous
的是{Symbol(id): "ROOT_QUERY"}
。
似乎我在这里错过了一个可能简单但至关重要的理解。
如何将新subscriptionData
的组件数据对象放入模板中以访问它?
解决方案
原来的问题是第一个订阅在初始查询结果在缓存中可用之前返回。
检查previous
作为ROOT_QUERY
数据存在的元素解决了这个问题。
Apollo-Devtools 在这里也有助于更好地理解缓存中的数据结构。
graphql - 如何在 GraphQL 突变/解析器中为每个用户创建和停止唯一的计时器
我正在制作一个应用程序,它要求我给每个用户一个 6 秒的间隔计时器,该计时器将每 6 秒完成一次操作。我已经让定时器可以基于函数是唯一的,但主要问题是如果我用不同的参数调用函数,我无法动态取消它们。我只能通过创建一个方法来取消计时器,该方法在某个倒计时将 clearInterval(action);
我基本上设置了函数,以便我可以传递两种类型的数字。消极或积极。这是一个例子:
需要明确的是,我不能将定时器分配给的“动作”变量分配给函数之外,因为它只允许服务器运行一个定时器而不是每个用户所需的一个定时器。我真的无法弄清楚这一点!
graphql resolver
graphql - 使用 makeRemoteExecutableSchema 拼接安全订阅
我们已经实现了模式拼接,其中 GraphQL 服务器从两个远程服务器获取模式并将它们拼接在一起。当我们只使用 Query 和 Mutations 时,一切都运行良好,但现在我们有一个用例,我们甚至需要缝合 Subscriptions,并且远程模式已经在其上实现了身份验证。
我们很难弄清楚如何通过网关将连接参数中收到的授权令牌从客户端传递到远程服务器。
这就是我们自省模式的方式:
API网关代码:
有什么方法可以实现这一点graphql-tools
吗?任何帮助表示赞赏。
graphql - 如何使用 Graphql SPQR 实现订阅?
如何使用 Graphql SPQR 库实现 GraphQL 的订阅功能?
typescript - 如何在 jest / apollo 客户端中捕获被拒绝的 graphql 订阅?
使用 graphql-yoga 我正在尝试编写笑话测试来涵盖订阅。
我能够成功地测试快乐路径是订阅作品(使用身份验证)。不幸的是,我无法测试订阅 websocket 连接被拒绝的情况。
在我的服务器设置中,我拒绝任何未通过我的身份验证标准的 websocket 连接:
第一个测试(幸福的道路)如我所愿通过:
然后我尝试了 3 种不同的方法来捕捉我期望在未经身份验证的场景中看到的期望。这些测试都没有像我希望的那样通过:
知道如何在未经身份验证的场景的测试中预期我期望的断言错误吗?
完整的回购:https ://github.com/jakelowen/typescript-graphql-boilerplate-server
graphql - 如何在保证订阅准备就绪的情况下执行突变?
以前,在 GraphQL 协议中有一条特殊的消息确认订阅:SUBSCRIPTION_SUCCESS(服务器 -> 客户端)。现在它已被弃用:在 apollographql和prismagraphql 中。为什么不再需要?
例如,我正在订阅
subscription commentAdded {
commentAdded(repoFullName: "test"){
id
}
}
我立即执行突变,
mutation submitComment {
submitComment(repoFullName: "test", commentContent: "test_msg") {
id
content
}
}
据我了解,这两个动作是异步执行的。并且服务器上的订阅处理和源事件流的创建可能需要一些时间。客户如何确定突变会触发此订阅?或者......是否应该等到订阅完成后才向服务器发出所有突变请求?