GraphQL实战:写给全栈工程师们
上QQ阅读APP看书,第一时间看更新

2.4.3 订阅操作

首先,订阅(Subscription)操作和查询操作一样,都是只读的,开发者不会通过订阅来修改服务端的数据。订阅和查询的区别在于,订阅是服务器端主动推送数据给客户端,而查询则是客户端主动从服务器端读取数据。

一个简单的订阅例子如下:

在上面的例子中,客户端可以订阅newProduct这个操作,当有新的商品数据在服务器创建出来的时候,GraphQL服务器就会主动推送新创建的商品数据到所有订阅了newProduct的客户端。

订阅操作在实现上一般需要Web-Socket或者HTTP2这些支持持久连接的协议来实现服务器端的推送,当然也可以在客户端使用定期轮询的方式来模拟推送。但无论如何实现,GraphQL客户端的调用方式都是和Query一样的——开发者可以根据实际情况自由指定所需要的字段。各位开发者在使用订阅操作前,请参阅框架文档。