问题: 我们正在尝试使用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
答案 0 :(得分:0)
Q1 / Q2
您必须进行多个订阅,并且ios ios / android / amplify sdks可以处理订阅握手协议以实时更新数据。
看看here
第三季度
我建议允许客户端订阅特定的频道(即使这意味着多个订阅),以便可以在服务而不是客户端中完成过滤逻辑,从而减少了客户端代码,这也意味着您不必担心关于维护或可伸缩性。