实时代理建议?

问题描述

我们正在 React.js 中构建一个 Web 应用程序。我们打算让它(前端)维护一个持久连接,通过它它将接收服务器发送的事件以更新其状态。但我们也希望它能够很好地横向扩展。所以我们的后端必须是无状态的。

我们需要的是弥合前端和后端之间差距的东西。管理持久前端连接并允许后端调用它以分派服务器发送的事件的东西。

到目前为止,我们找到了一个可以解决这个问题的候选人。商业解决方案名为 Fanout,开源变体(似乎难以扩展)名为 Pushpin。它们被称为“实时代理”。

我很难相信这些似乎是一个非常普遍的问题的唯一解决方案。我们想探索替代方案。有什么建议吗?

解决方法

Pushpin 首席开发人员(和 Fanout 创始人)在这里,所以我有偏见。

我们想探索替代方案。有什么建议吗?

作为观看此空间的人,在撰写本文时(2021 年 3 月),我认为最接近图钉的替代品是:

  • AWS API Gateway。这仅支持 WebSockets(不支持 SSE 或其他基于 HTTP 的流),但它似乎以通用方式实现。它可能用于实现任意 WebSocket API 定义。

  • Nchan。这提供了一些类似代理的行为,尽管它的 API 模式有点自以为是。它可能可以用来实现一些 HTTP/WebSocket API 定义,但不能随意实现。

我很难相信这些似乎是一个很普遍的问题的唯一解决方案

这也经常让我感到惊讶。我认为这可以解释为实时 API 开发往往非常粗糙并且涉及固执的决策。开发人员通常关心满足他们工作的公司的要求,而不是使他们的解决方案可移植到其他公司的要求。用一般的方法解决这个问题是不明显的。

例如,Uber recently wrote 关于他们的实时平台,但他们不会将解决方案提供给其他人,即使他们这样做,也会充满 Uber 主义,以至于其他人无法使用.充其量,您可以借鉴他们的一些想法并构建自己的实时平台,只有您的公司才能使用。 ;)