仅供参考,我最初在 AWS AppSync 论坛上发布了这个问题(以防 AWS 将来回答它)。
我一直在尝试制作一个简单的帖子应用程序,如文档中的那个,但我没有找到在一个视图控制器中处理多个订阅的文档或指南。
三个突变:onCreatePost、onUpdatePost、onDeletePost(当然还有对这些突变的三个订阅)
在 Xcode 中,我在 viewDidLoad() 期间调用了三个函数:subscribeToNewPosts()、subscribeToUpdatedPosts()、subscribeToDeletedPosts()
每个订阅函数都工作并创建一个具有正确功能的订阅,并在单独使用时相应地更新表视图。但是,如果一个接一个地调用,只有最后一个订阅才会真正接收数据并更新表视图。在订阅了所有三个突变后,我在 AppSyncMQTTClient.swift 中设置了一个断点来检查 topicSubscribersDictionary
func startNewSubscription(subscriptionInfo: AWSSubscriptionInfo) {
var topicQueue = [String]()
let mqttClient = MQTTClient<AnyObject, AnyObject>()
mqttClient.clientDelegate = self
for topic in subscriptionInfo.topics {
if topicSubscribersDictionary[topic] != nil {
// if the client wants subscriptions and is allowed we add it to list of subscribe
topicQueue.append(topic)
}
}
mqttClients.append(mqttClient)
mqttClientsWithTopics[mqttClient] = topicQueue
mqttClient.connect(withClientId: subscriptionInfo.clientId, toHost: subscriptionInfo.url, statusCallback: nil)
}
并且所有三个订阅实际上都在字典中......
我是否需要多个 appSyncClient 实例,每个订阅一个?架构设计有问题吗?
示例用例:简单的聊天应用程序。新对话开始 = OnCreatePostSubscription; 该对话中的新传入消息 = OnUpdatePostSubscription