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