AsyncAPI:如果两端同时作为生产者和消费者,将使用多少个 websocket?

问题描述

我有应用程序限制:

  1. 使用 AsyncAPI 来记录和规范 API
  2. 用于通信的 Websockets
  3. 只有两个系统,它们都是彼此的生产者和消费者(服务器和客户端)

我有一个问题,如果两端互为服务器和客户端(生产者和消费者),那么将使用多少个 websockets 进行通信?只有一个 websocket 就足够了,还是我必须使用两个 websocket?

解决方法

答案很大程度上取决于您的用例的更多细节。

将使用多少个 websockets 进行通信

我假设这个问题是指生产者端(公开 WebSocket API 的服务器)应该有多少端点或选项(查询参数)可用。这真的取决于您的用例。

服务器和客户端

如果客户端是前端并且您正在构建一些聊天或只是实时 UI,则这取决于前端技术。我过去的方法是始终为每个视图建立一个单独的 websocket 连接,只使用给定视图所需的特定消息流。看一下 v1 Websocket API for Gemini 的例子。您有一个端点,您可以在其中传递具有多个不同查询参数的货币符号,以过滤您想要在给定视图中使用的消息,例如 wss://api.gemini.com/v1/marketdata/btcusd?heartbeat=true

以上是我总是为服务器->客户端所做的,它直接转换为后端->前端。如果它转化为后端-> 多个其他后端,那么我将探讨这些天加密货币交易 API 是如何做的。您使用 Websocket 作为主要协议来建立连接,然后您遵循另一个子协议来订阅和取消订阅您需要使用 atm 的不同消息。因此,基本上通过一个 Websocket 连接,您可以根据收到的消息灵活地请求不同的数据。看看v2 Websocket API for Gemini。这个还没有翻译成AsyncAPI文件,至少我没见过。

有帮助吗?还是我完全误解了?