是否可以通过 GraphQL/REST 后端共享 3rd 方 API websocket/实时连接?

Posted

技术标签:

【中文标题】是否可以通过 GraphQL/REST 后端共享 3rd 方 API websocket/实时连接?【英文标题】:Is it possible to share 3rd party API websocket/realtime connection through GraphQL/REST backend? 【发布时间】:2021-02-24 13:02:34 【问题描述】:

我的后端服务器连接到第三方 API 服务。这个第三方 API 服务通过 websocket 将事件发送到我的后端,然后再转发回我的前端。从 websocket 发送的每条消息,我都会付费。

此外,websocket 根据请求的值提供不同的数据。一个例子:想象一个为不同产品提供实时支付的 API 服务。如果我想接收书籍的实时付款,我会使用价值“书籍”。如果我想接收 iPhone 的实时付款,我会使用值“iPhones”等。

为了最大限度地减少成本支出,我希望用户通过我的后端进行连接以共享信息流,而不是每次都创建一个新的 websocket 连接。并且对于未使用的连接,要断开与第三方 websocket 的连接。 IE。如果用户要通过我的后端请求“书籍”,则会打开到第三方 API 的连接,然后随后流回。如果另一个用户也请求“书”,他们只需跳到现有打开的连接上。

这是 GraphQL 的可能性吗?您如何看待它的实现?就在我的脑海中,我想在后端进行某种跟踪,检查打开了哪些连接以及是否正在使用它们。否则,在 REST 中可以吗?

【问题讨论】:

这听起来像额外的努力每次都做一个websocket,而不是只做一次。恕我直言,默认设置是建立 1 个连接……你为什么要建立这么多? 【参考方案1】:

您可以使用 Apollo 的轮询功能做一些非常相似的事情,并加入一些自定义逻辑。

基本上,您可以使用轮询作为套接字来打开与第三方的连接以更新数据层。然后,当另一个用户查询该数据层时,它应该已经存在(或者您可以在此基础上添加快速检查)。

【讨论】:

以上是关于是否可以通过 GraphQL/REST 后端共享 3rd 方 API websocket/实时连接?的主要内容,如果未能解决你的问题,请参考以下文章

通过WebRTC共享电子屏幕 - 如何建立连接?

是否可以跨多个应用共享应用内结算购买?

基于微信小程序共享停车位设计与实现SSM_car.rar(项目源码+数据库文件+微信小程序开发+后端java语言)

我们如何在一个驱动器上共享后端 MS Access 2016

用于后端同步的 Javascript 推送通知

Git 应用程序前端/后端共享代码库存储库