【发布时间】:2014-10-09 02:22:47
【问题描述】:
我正在为我的 iOS 消息传递应用程序使用 GCDAsyncSocket 库,并在后端使用 Twisted Server。一切都设置好并且工作正常,但是当它不能正常工作时,我发现了一个特殊的情况。因此,我的服务器的架构方式是,当用户离线时,他的所有消息都缓存在服务器上,当检测到他在线时,服务器会立即将所有缓存的待处理消息发送给他。
现在,GCDAsyncSocket 使用内部读取和写入队列,所以在这里,那些由服务器发送的待处理消息被读取队列排队,直到它们被委托方法 -(void)socket:didReadData:withTag: 读取现在,在我的应用程序中,这个委托方法处理传入的消息并在表格视图中一一显示。因此,问题的关键在于,每当委托方法从队列中读取时,如果您暂停应用程序,读取队列中所有未处理的消息都会丢失。因此,为了解决这个问题,我想访问读取队列,以便在应用暂停之前保存其内容,以便在再次打开应用时恢复它。
注意:根据我的理解,丢失的消息来自队列而不是服务器,因为服务器显示“发送的所有消息”甚至在代理在处理时达到一半消息之前。之后,如果暂停,则此问题仍然存在。
那我做错了吗?或者有什么办法可以访问队列?
【问题讨论】:
标签: ios twisted gcdasyncsocket