订阅

动机

您的服务器现在可以正确处理查询和变更。仍然有一个 GraphQL 操作类型,它被称为 订阅。当另外两个由客户端通过 HTTP 请求发送,订阅是服务器在某个事件发生时将数据本身推送给感兴趣的客户端的一种方式。这就是 GraphQL 处理 实时 通信的方式。

更新模式

订阅其实很简单。在这里我们将遵循 Graphcool Simple API 的规范, 再次让您更容易地在前端应用程序中替换它,以便可以快速浏览其他教程。但请记住,这不一定是这样,可以设计自己的订阅,以获得任何您喜欢的格式。

发布/订阅事件

在更新模式之后,下一步是实现解析器,就像以前的其他所有情况一样。订阅解析器是特别的,因为它们不应该立即返回响应。相反,它们只是将有效载荷的数据和那些客户端订阅了 事件 通知到服务器。

需要创建一个 PubSub 的实例,这是 graphql-subscriptions 提供的一个对象。由于服务器中只会需要有一个实例,因此无需将其传递给上下文。

配置 SubscriptionServer

剩下要做的就是设置一个新的端点来处理订阅请求。这是必要的,因为这个端点不会是一个简单的 HTTP 处理程序。它将使用 WebSocket连接,这将在服务器和订阅的客户端之间保持连接。

幸运的是,不必了解 WebSocket 也能使其正常工作。

通过 playground 来测试

现在添加更多的订阅将是轻而易举的,因为一切都已经设置好了。

Unlock the next chapter
以下内容哪些是对的?
应通过定期查询实现实时支持
目前无法通过 GraphiQL 测试订阅
订阅可以通过 web socket 来实现
实现订阅的唯一方法是使用 `subscriptions-transport-ws` 包