GraphQL订阅和WebSocket协议之间有什么区别?

GraphQL订阅和WebSocket协议之间有什么区别?,websocket,socket.io,graphql,graphql-subscriptions,Websocket,Socket.io,Graphql,Graphql Subscriptions,我有两面性 一方面,我通过使用诸如ws(Node.js WebSocket库)或Socket.io之类的库/包直接使用WebSocket协议。在这里,我可以使用测试工具来订阅和解决从ws或wss开始的问题,比如ws://localhost:8080,并接收更新 在另一方面,我通过使用类似于ApolloGraphQL的组件来使用GraphQL订阅。这样看来,我应该使用GraphQL中嵌入的东西。以这种方式开发的项目无法通过ws://或wss://地址访问,或者至少我不知道 我的问题是这两者有什么不

我有两面性

一方面,我通过使用诸如ws(Node.js WebSocket库)或Socket.io之类的库/包直接使用WebSocket协议。在这里,我可以使用测试工具来订阅和解决从
ws
wss
开始的问题,比如
ws://localhost:8080
,并接收更新

在另一方面,我通过使用类似于
ApolloGraphQL
的组件来使用GraphQL订阅。这样看来,我应该使用GraphQL中嵌入的东西。以这种方式开发的项目无法通过
ws://
wss://
地址访问,或者至少我不知道

我的问题是这两者有什么不同?GraphQL订阅是否构建在WebSocket之上?如果是,如何进行?如何通过
ws://
wss://
url访问GraphQL订阅

更新:
我以前读过并提出过问题,但它们没有多大帮助。

GraphQL是一种规范,常见的情况是在HTTP上看到GraphQL用于查询和突变,但是对于GraphQL订阅,我们需要从API接收连续更新。这就是WebSocket的用武之地

WebSocket通常用作GraphQL订阅的传输协议。因此,为了回答您的问题,GraphQL订阅不绑定到任何协议。事实上,GraphQL查询和变异也不限于HTTP。因此,基于WebSocket的GraphQL订阅库实现了一个小型协议,它们通过该协议发送GraphQL订阅操作和结果

两个值得注意的实现是:

  • 它是由阿波罗团队制作的(因此在阿波罗服务器中得到了很大的支持),但现在不再积极维护
  • 这是一个后续项目(具有轻微的不兼容性)。它的自述文件确实解释了如何将其添加到Apollo服务器

这些只是带有服务器端和客户端实现的协议库,以方便通过WebSocket发送GraphQL操作和结果。这样一来,您就不必为制定自己的协议或在WebSocket以外的其他设备上实现协议而花费大量的工作。

如何使用工具?如何查看GraphQL订阅的流量?