问题标签 [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.

0 投票
1 回答
1897 浏览

java - How can I implement apollographql client into the maven project to activate subscription?

I am trying to create a graphql client in Java project and I am using apollographql library. The problem is that I am not able to get the dependencies using the pom.xml with version different than from Central repository. The other thing is that all of the examples are built with Gradle. Do you have any examples or ideas about how to create a simple subscription client using apollo library and maven project? One of the specific issues that I have is that once apollographql-runtime library is downloaded there is no "subscription" package. I wanted to use this dependency:

#xA;

but I am not able to download it using pom.xml. In a different project, it was working with gradle.build file.

tried download .jar file but still no "subscription" package available.

pom.xml

#xA;

I want to import this class:

#xA;

Could not resolve dependencies for project com.brzozaxd.rbpvendor2:rbpvendor2:jar:1.0-SNAPSHOT: The following artifacts could not be resolved: com.apollographql.apollo:apollo-api:jar:1.0.0-alpha5

0 投票
0 回答
215 浏览

node.js - 带有子节点的 graphql 订阅似乎对我不起作用

首先,如果我有下一个代码结构,订阅就可以工作

图式

解析器

在此处输入图像描述

当我尝试将somethingChanged节点作为另一个account节点的子节点时,问题就变成了一个问题,如下所示:

所以下一个模式和解析器不起作用

错误

{ "error": { "message": "订阅字段必须返回 Async Iterable。收到:未定义" } }

在此处输入图像描述

我相信这不是问题,只是误解))请帮助我))


可能有帮助的附加信息:

服务器.ts

0 投票
0 回答
280 浏览

graphql - 如何在 GraphQL 中停止订阅?

这是我感兴趣的一段代码(取自/examples/目录):

我有点担心什么是最好的方法(如何在连接关闭后通过 refreshIntervalIdsubscribe()onDisconnect()停止间隔。

更新:我意识到我应该onDisconnect在服务器的选项下插入(而不是在解析器块中),所以我可能认为我根本不应该担心它(它应该默认处理断开连接)。

0 投票
1 回答
2131 浏览

javascript - 如何正确使用 GraphQL 订阅?

我有一个 GraphQL 驱动的应用程序。查询和变异部分运行良好。我尝试添加 GraphQL 订阅。

服务器 GraphQL 订阅部分代码的灵感来自apollographql/subscriptions-transport-ws自述文件中的演示。

另请查看代码中的注释以获取更多详细信息。

我正在使用Altair GraphQL Client进行测试,因为它支持 GraphQL 订阅。

在此处输入图像描述

如屏幕截图所示,每次数据库中的数据发生变化时,它都会获取新数据。

但是,meChangednull不会抛出任何错误。任何想法?谢谢

0 投票
1 回答
889 浏览

apollo - 通过 apollo 连接到 graphql-yoga 服务器进行订阅的正确方法是什么?

阿波罗客户端:2.6.3
阿波罗链接-http:1.5.15
阿波罗链接-ws:1.0.18
订阅-传输-ws:0.9.16

所以我有一个前端(节点)服务器,它连接到后端(graphql-yoga)服务器,如下所示:

查询和变异解析器被正确触发,但订阅解析器没有被触发。我假设那是因为我没有直接连接到 graphql-yoga。但是,如果我将 WebSocketLink uri 更改ws://localhost:4000为此会导致:

failed: Error during WebSocket handshake: Unexpected response code: 200

要发出的错误消息。

graphql-yoga 服务器本身与 prisma 建立订阅连接,如下所示:

我的订阅解析器如下:

如果我在操场上运行以下订阅:

并通过我的网站触发订单突变,显示正确的数据结果集:

在此处输入图像描述

但是订阅解析器没有被订阅调用操作:

我该如何解决这个问题?

0 投票
1 回答
342 浏览

graphql - 如何在 graphql 游乐场上运行 Appsync 订阅

我已经使用 appsync 服务在 aws 上部署了 graphql API。我可以在亚马逊控制台上运行查询、变异和订阅,但是当我尝试在任何 graphql 游乐场上测试订阅时,它会显示错误。

我已经使用无服务器 graphql-playground命令为 AppSync 运行 Playground。

如何在 graphql 游乐场上运行 appsync 订阅?

错误截图

0 投票
0 回答
153 浏览

reactjs - Graphql 订阅无法正常工作

我正在使用带有 react 客户端的 graphql 订阅节点服务器开发实时个人房间聊天应用程序。当我尝试连续与两到三个聊天室聊天时,它没有响应。当我刷新页面时,它运行良好,订阅运行良好。我在这里找不到问题..任何人都可以帮我解决这个问题

0 投票
2 回答
1213 浏览

laravel - 使用订阅时,laravel-graphql-playground 无法连接到 UI 中的 websocket

我目前使用 Lighthouse 作为 laravel 的 graphql 服务器。我已经阅读了他们网站上的订阅文档(https://lighthouse-php.com/master/subscriptions/getting-started.html),并将适当的推送器凭据添加到 .env 文件中。

尝试通过 graphql-playground UI 订阅时,出现以下错误:

订阅:

错误:

所有突变和查询都在正常工作。

我已经覆盖了 laravel-graphql-playground laravel 的 index.blade.php 文件,并且可以向该文件添加一个“subscriptionEndpoint”变量,但不清楚该变量应该包含什么。

由于我通过推送器连接,有谁知道“subscriptionEndpoint”变量中应该包含什么?

0 投票
0 回答
865 浏览

graphql - 如何从后端消息队列应用程序触发 GraphQL 订阅

目前,每当有新数据传入时,我正在使用 Socket.io / SignalR 从我的后端消息队列系统发出一个事件。这样我就可以在我的 React 应用程序中设置一个事件处理程序,并从事件处理程序中更新中继缓存。

它似乎不是最 Graphql ish 做事的方式,所以我玩了一下 RFC 之前的实时查询实现,您观察到响应式数据存储中的数据更改将其推送到 graphql 服务器,并进一步推送到客户端使用 websockets ......带有一些相当复杂的自定义代码......显然graphql 还没有准备好进行实时查询(不是轮询)

再往下几行说:

在构建基于事件的订阅时,确定什么应该触发事件的问题很容易,因为事件明确定义了这一点。事实证明,在现有消息队列系统上实现它也相当简单。

这引出了我的问题。当一个新事件传入您的后端消息队列应用程序并且您需要在 ui 中实时反映这些新数据时,您如何(以 graphql 方式)最好地触发 graphql 订阅 - 比如说每秒?我不是在谈论在前端/客户端中触发事件或像您在谈论订阅时通常看到的那样每隔 x 秒轮询一次。

不确定它是否相关,但我使用 Relay Modern 作为我首选的 graphql 客户端。

如果我得到一点帮助来了解如何在没有突变的情况下触发/调用订阅,这里有一些想法可能会奏效。

  1. 后端工作人员/消息队列“A”接收带有一些设备数据的新传入事件。它使用 SignalR 或其他 pubsub (redis/socket.io/?) 通知 graphql 服务器“B”(订阅事件)有新事件发生。然后,graphql 服务器触发/执行订阅,前端反应中继应用程序“C”自动更新,因为它定义了中继订阅。这将是理想的,对吧?但是如何在graphql服务器上触发订阅?

  2. 只需使用 Socket.io/SignalR 从后端工作人员/消息队列“A”对传入数据发出事件,订阅并处理前端“B”中的事件,然后从 Socket.io/SignalR 事件中以编程方式调用订阅处理程序(如果这样的话,直接调用订阅,甚至是可能的?)。但是,使用订阅而不是纯 Socket.io/SignalR 的唯一改进是我已将中继缓存/存储的更新从处理程序移至订阅。如果有的话,也不是很大的改进。但是缓存/存储的手动更新确实很麻烦,虽然不是那么难:/

人们如何使用信号器处理实时流式传输(设备)数据,为什么所有实时文章/示例都只是重复相同的旧简单聊天应用程序,其中用户界面只是在用户进行点击事件后更新?graphql 是否还不适合实时处理频繁传入的设备数据流?我明白为什么实时查询在自己实现它们之后被延迟了,但是没有它们,实时数据更新并将其从服务器推送到前端?

0 投票
1 回答
1222 浏览

node.js - Apollo GraphQL:MQTT 订阅代理以仅提供已发布的数据

设想

我有一个传感器节点,它发布有关特定 MQTT 主题的信息(发送到 Mosquitto 代理)。发送的数据是纯字符串。

后端

目前我正在使用apollo-server-express构建 GraphQL 服务器。我希望使用`graphql-mqtt-subscriptions来:

  • 订阅 MQTT 代理
  • 阅读特定主题的信息并将其返回到graphiqlUI

dependencies

代码片段

入口点server.js代码:

typeDefsGraphQL的架构如下:

wheresiteAdded(topic: String)将获取 MQTT 需要订阅的主题。例子:

resolvers.js如下所示(如可能文档中所述):

推理

被调用但之后console.log出现args.topic以下错误graphiql

如果我执行return pubsub.asyncIterator()

它提供来自 Broker 的及时数据,但输出为null

我根据Apollo Docsserver.js在上面添加了 Websockets 中间件

我在哪里出错以及如何将来自订阅主题的数据添加到graphiql