【发布时间】:2013-10-28 09:15:55
【问题描述】:
为了好玩,我构建了一个基于套接字的小聊天应用程序。它通过 tcp 套接字与 nodejs 服务器通话。它成功地来回发送消息。但是,当我按下主页按钮并将我的应用程序置于后台时会出现问题 - 此时套接字似乎已“暂停”并且在此期间发送的所有消息都丢失了。
我已经设置了应用程序在后台时的推送通知,但由于套接字在应用程序中未激活,因此消息永远不会真正到达应用程序。
我应该如何处理?我有哪些选择? 我有一些想法,但我喜欢这里关于人们如何处理这个问题的一些意见。
我的想法:
在我的 nodejs 服务器上添加一个“loadHistory”方法,用于发送频道的所有历史记录。这样我的应用程序就可以调用某个 URL 并获得一个 包含所有消息的 JSON 格式响应。也许每次触摸表格项目时都应该这样做?
利用iOS7新的后台运行功能? (我不确定它是否可以让套接字保持活动状态)
实现一种方法让服务器知道消息是否已送达,如果无法送达,则将消息存储在 数据库。一旦客户端再次上线,它就会发送 通过 tcp 的消息。这将需要大量附加功能 服务器所以我想尽可能避免这种情况。
【问题讨论】:
标签: ios iphone objective-c