0

AsyncIterator需要使用.next(). 但是对于 websockets,我通常想在事件发生时推送数据。我唯一能想到的是,通过使用基于拉的,他们可以限制速率。

那么什么叫.next()呢?它是一个计时器,还是它侦听发布消息,排队,然后调用.next()直到它消耗所有队列?

这是否适用于实时数据,例如地图上的 GPS 位置?

看了这里还是想不通:https ://github.com/facebook/graphql/blob/master/rfcs/Subscriptions.md

来自 Apollo 的 GraphQL 订阅回购:https ://github.com/apollographql/graphql-subscriptions

4

1 回答 1

1

AsyncIterator遍历一个EventStream,然后每个事件都会在某个时候通过过滤器和/或有效负载操作来解决。

负载操作可以调用另一个异步数据库请求,或者解析其他 graphQL 类型,这很耗时。

所以 GraphQL 使用基于 pull 的系统来限速解析 eventStream。如果您不使用withFilter既不使用resolves,则事件不会延迟,除非有很多用户。

GraphQL 适用于低延迟数据。

来源:https ://github.com/graphql/graphql-js/blob/master/src/subscription/subscribe.js#L44

于 2017-12-15T19:49:08.833 回答