订阅
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
GraphQL 订阅用于随时间从服务器接收查询的更新。一个常见的例子是从服务器发送更新通知。
常规的 GraphQL 查询使用一个简单的 (HTTP) 请求/响应来执行查询。对于订阅来说,保持了一个开放的链接。当前,我们使用 Websocket 的技术来支持订阅。我们将会在未来添加 SSE 的支持。
在 DGS 框架中,一个订阅是一个有 @DgsData
注解修饰的 datafetcher 实现。不同于普通的 datafetcher,订阅必须返回一个 org.reactivestreams.Publisher
。
Publisher
接口来自于 Reactive Streams。Flux 是默认的 Spring 实现。
是一个完整的例子。下一步,必须选择传输实现,这取决于应用程序的部署方式。
订阅的 endpoint 运行在 /subscriptions
上。正常的 GraphQL 查询发送到 /graphql
,而订阅请求发送到 /subscriptions
。在 GraphQL 社区里,订阅用的最常见的传输协议就是 WebSockets。
Apollo 定义了一个 ,由客户端库支持,由 DGS 框架实现。为了启用 WebSocket 支持,需要在你的 build.gradle
中添加如下模块:
Apollo 客户端通过一个 支持 WebSocket。通常,您希望将Apollo Client配置为HTTP链接和WS链接,并根据查询类型将它们 。