GraphQL 订阅与 socket.io

Posted

技术标签:

【中文标题】GraphQL 订阅与 socket.io【英文标题】:GraphQL Subscriptions vs socket.io 【发布时间】:2021-05-25 17:09:05 【问题描述】:

我正在尝试基于 websocket 制作实时应用程序并有两个选择。一个是socket.io,另一个是GraphQL Subscriptions。但是很难找到它们的比较。

选择其中之一可以有什么标准,有什么性能差异吗?

【问题讨论】:

【参考方案1】:

Socket.IO 是一个库,可在浏览器和服务器之间实现实时、双向和基于事件的通信。 socket.io

GraphQL 订阅另一方面是一个概念,它允许客户端监听来自服务器的实时消息。

所以基本上,GraphQL 订阅 是一种规范,它定义了允许 GraphQL 客户端和服务器实时通信的策略和规则。要实现该功能,您可以使用 Socket.io 等实时工具。

更多详情可以看一下:https://dgraph.io/docs/graphql/subscriptions/

【讨论】:

它们之间是否存在性能问题?【参考方案2】:

这是我的比较,因为我有同样的情况。

GraphQL 订阅 - 在数据更改时提供更新。它可以在 GraphQL 服务器中发生突变时触发。这很棒,因为它使您的逻辑紧密耦合。但是,在“聊天”应用程序的用例中。这不是最好的。

Socket.IO - 提供 2 Way Event 通知服务。因此,您可以从客户端发送事件,而无需等待执行 GraphQL 突变。例如:“用户 A 正在键入...”或用户进入或离开对话。

【讨论】:

以上是关于GraphQL 订阅与 socket.io的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL 订阅与 socket.io

有没有办法使用 graphql 订阅将数据与聚合一起获取?

如何将 socket.io 与 graphql 订阅一起使用?

websocket

如何使 Flutter graphql 订阅与轮渡包一起使用?

GraphQL 通过公共网关服务订阅内部服务