移动应用程序在后台时,Websockets消息传递

时间:2016-03-30 08:10:33

标签: ios websocket pubnub pusher

我正在尝试使用Pusher或PubNub(websockets)实现iOS聊天应用程序。

问题:当iOS应用在后台时,消息传递如何工作?

据我所知,Websockets实现提供了实时消息传递,并且不会对消息进行缓存。 当应用在后台时套接字连接断开,邮件是否丢失?

如果是,我该如何恢复丢失的消息?一个想法是每次应用程序到达前台时实现状态刷新协议。

2 个答案:

答案 0 :(得分:2)

PubNub错过了邮件恢复选项

你提到PubNub(我工作的公司)和@FrankG提到的,除非你获得Apple的许可在后台运行你的应用程序(保持连接到互联网,因此,PubNub),你将不会收到任何消息实时。

您可以使用PubNub's Mobile Push Gateway并在应用处于后台(但空闲/未运行)或完全未运行(终止状态)时接收APNS推送消息。

当再次激活应用程序时,PubNub可以从订阅的频道configured to automatically retrieve missed messages开始,但这对于短时间的断开连接是有利的。

如果离线较长时间,您可以启用Storage & Playback并使用所需频道中的the historyForChannel API to fetch all the missed messages

答案 1 :(得分:1)

答案:它没有。

如果iOS应用在后台,那你就不走运了。当应用程序在后台时,没有官方(和Apple认可的)保持连接打开的方式。有些黑客喜欢播放静音音轨以保持前景,但Apple并不赞成这种黑客行为。您需要使用APNS发送离线消息以将应用程序带到前台,以便重新连接。

并且您100%正确,WS标准不解决缓存问题。这必须由架构中的另一个子系统执行。

Kaazing Gateway(披露:我工作的公司)在我们的消息传递网关中有一个功能,用于缓存发送的最后一个值。当客户端重新连接(我们的客户端libs自动重新连接)时,他们将看到该值。