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

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

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

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

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

【问题讨论】:

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

标签: node.js rest websocket graphql server-sent-events


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    相关资源
    最近更新 更多