订阅 AWS AppSync 中的群组/私人聊天列表



我目前正在评估 AWS AppSync 作为消息传递应用程序的后端解决方案。

用户将有一个浏览新聊天组的视图和一个不同的视图,他们可以看到他们加入和私人聊天的列表(在列表中应显示聊天的名称和最后一条消息(。当然,每个聊天都会有一个详细视图,其中显示了所有消息。

问题是如何设计订阅部分。我的发送消息的突变将如下所示:

createMessage( content: String, conversationId: ID!, createdAt: String!, id: ID! ): Message

根据订阅文档,我只有两种可能性来设计我的订阅。我要么订阅所有新消息,要么通过使用对话 ID 作为参数来订阅来自特定对话的所有新消息。 因此,就我而言,我需要获取所有用户对话,然后为每个对话进行订阅调用。不知何故,这感觉像是一个问题,但我没有看到不同的方式(例如,目前无法进行自定义过滤(根据此链接((

有没有更好的方法来订阅特定消息子集的新消息(仅在我订阅的对话中(? 客户端上可能有 100 个活动订阅是一个问题吗?

提前致谢 卢卡

你是对的。开箱即用的唯一两种方法是:

  1. 使用参数订阅每个对话。
  2. 订阅客户端上的所有对话并过滤消息。

如果使用参数(选项 #1(订阅每个会话,则可以在一个 HTTP 请求中批量发送订阅请求。 例如,在一个请求中发送最多 50 个具有不同会话参数的订阅。

还有第三种选择,您可以在其中做更多工作以确保客户效率。此选项涉及设置与客户端对话的反向索引。

  1. 创建一个索引,您可以在其中找到给定对话的客户。客户端将使用一个参数(可能是客户端 ID(进行一个订阅。发布消息时,您有一个中间步骤(可能是订阅所有消息的后端作业(,您可以在索引中查看以确定哪些客户端对要为其发布消息的对话感兴趣。然后为每个客户端发布。

最新更新