AppSync/Graphql 多个id 的多个订阅或一个订阅?
AppSync/Graphql Multiple subscriptions or one subscriptions for multiple ids?
问题:
我们正在尝试使用 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) 正在谈论类似的事情,我们测试了它但它不起作用,这是一个有效的解决方案吗?
Q2:
关于放大; amplify 在同时收听大量订阅时会表现良好吗?它会进行某种合并订阅和 websockets 还是会单独处理它们?
Q3:
您对这些设计有何评论?那里将有一项服务将为聊天参与者广播(调用带有客户端 ID 的突变)消息,并且客户端将仅订阅单个频道。像下面这样:
来源 2:
来源 2:
Q1/Q2
您必须进行多次订阅,aws ios/android/amplify sdks 可以处理订阅握手协议以实时更新数据。
看看here
Q3
我建议允许客户端订阅特定频道(即使这意味着多个订阅),以便可以在服务而不是客户端完成过滤逻辑,减少客户端代码,这也意味着您没有不用担心维护或可扩展性。
问题: 我们正在尝试使用 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) 正在谈论类似的事情,我们测试了它但它不起作用,这是一个有效的解决方案吗?
Q2: 关于放大; amplify 在同时收听大量订阅时会表现良好吗?它会进行某种合并订阅和 websockets 还是会单独处理它们?
Q3:
您对这些设计有何评论?那里将有一项服务将为聊天参与者广播(调用带有客户端 ID 的突变)消息,并且客户端将仅订阅单个频道。像下面这样:
来源 2:
Q1/Q2
您必须进行多次订阅,aws ios/android/amplify sdks 可以处理订阅握手协议以实时更新数据。
看看here
Q3
我建议允许客户端订阅特定频道(即使这意味着多个订阅),以便可以在服务而不是客户端完成过滤逻辑,减少客户端代码,这也意味着您没有不用担心维护或可扩展性。