首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GraphQL订阅和WebSocket协议有什么区别?

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

Stack Overflow用户
提问于 2021-05-23 12:51:53
回答 1查看 9.8K关注 0票数 8

我有两面。

一方面,我通过使用ws (一个WebSocket WebSocket库)或Socket.io等库/包来直接使用WebSocket协议。在这里,我可以使用测试工具订阅wswss (比如ws://localhost:8080 )并进行地址处理,并接收更新。

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

我的问题是,两者有什么区别?GraphQL订阅是建立在WebSocket之上的吗?如果是,怎么做?如何通过GraphQL或wss:// urls访问wss://订阅?

更新:我以前读过thisthis的问题,但是他们没有多大帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-24 15:30:56

GraphQL是一种规范,使用GraphQL进行查询和突变是很常见的,但是对于GraphQL订阅,我们需要接收来自GraphQL的连续更新。这就是WebSockets进来的地方。

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

两个值得注意的实现是:

  • subscriptions-transport-ws是由阿波罗团队开发的(因此在阿波罗服务器上得到了很大的支持),但是并没有积极维护anymore
  • graphql-ws,这是一个后续项目(略有不兼容)。它的自述文件解释了如何将其添加到阿波罗服务器.

这些只是带有服务器端和客户端实现的协议库,以方便GraphQL操作和通过WebSockets发送结果。因此,它们占用了大量的工作,使您不得不想出自己的协议,或者在WebSockets之外的其他东西上实现协议。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67659937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档