仅供参考我发布了这个问题在 AWS AppSync 论坛中(以防将来 AWS 回答它)。
我一直在尝试制作一个简单的帖子应用程序,例如docs https://docs.aws.amazon.com/appsync/latest/devguide/building-a-client-app-ios.html但我没有找到在一个视图控制器中处理多个订阅的文档或指南。
三个突变: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 实例,每个订阅一个?是架构设计的问题吗?
schema.graphql https://s3-us-west-2.amazonaws.com/awsforumuploads/Posts/iOS+-+Multiple+subscriptions+in+same+view+controller/schema.graphql
架构.json https://s3-us-west-2.amazonaws.com/awsforumuploads/Posts/iOS+-+Multiple+subscriptions+in+same+view+controller/schema.json
突变.graphql https://s3-us-west-2.amazonaws.com/awsforumuploads/Posts/iOS+-+Multiple+subscriptions+in+same+view+controller/mutations.graphql
查询.graphql https://s3-us-west-2.amazonaws.com/awsforumuploads/Posts/iOS+-+Multiple+subscriptions+in+same+view+controller/queries.graphql
订阅.graphql https://s3-us-west-2.amazonaws.com/awsforumuploads/Posts/iOS+-+Multiple+subscriptions+in+same+view+controller/subscriptions.graphql
示例用例:简单的聊天应用程序。新对话开始 = OnCreatePostSubscription;该对话中的新传入消息 = OnUpdatePostSubscription