AppSync / Graphql多个订阅还是多个ID的一个订阅?

时间:2019-03-18 15:53:11

标签: facebook graphql chat aws-appsync real-time-data

问题: 我们正在尝试使用AWS产品AppSync来创建聊天应用程序,我们希望获得最佳性能,但是我们在AppSync和Graphql中遇到了实时订阅的问题,在这种情况下,单个用户在某些情况下需要处理订阅的问题认为不是最佳解决方案,您有何建议?

问题示例:

Mutation{
    addMessage(conversation_id=Int!, content:String!) : Message
}
Subscription{
   subscribeForNewMessages(convesration_id: Int!):Message
        @aws_subscribe(mutations: ["addMessage"])
}

此设计的问题在于,用户需要调用此订阅并继续侦听每个会话,如果会话数量巨大,我们希望这会使客户端不知所措。

问题:

Q1: 我们正在努力实现的是为多个(conversation_id)订阅一个,这怎么可能? 这些人(https://github.com/apollographql/apollo-client/issues/2633)谈论的是类似的内容,我们对其进行了测试,但它不起作用,这是有效的解决方案吗?

第二季度: 关于放大;模拟收听订阅的杂音时,放大效果会很好吗?会合并订阅和websocket还是将它们分开处理?

Q3: 您对这些设计有何评论?那里将有一项服务,该服务将为聊天参与者广播消息(使用客户端ID调用突变),客户端将仅订阅一个频道。如下所示: src2:AWS AppSync for chatting application src2:Subscribe to a List of Group / Private Chats in AWS AppSync

1 个答案:

答案 0 :(得分:0)

Q1 / Q2

您必须进行多个订阅,并且ios ios / android / amplify sdks可以处理订阅握手协议以实时更新数据。

看看here

第三季度

我建议允许客户端订阅特定的频道(即使这意味着多个订阅),以便可以在服务而不是客户端中完成过滤逻辑,从而减少了客户端代码,这也意味着您不必担心关于维护或可伸缩性。