2015-07-12 36 views
1

我使用的WebSockets,让我的Android应用程序中实时聊天。当应用程序未处于活动状态并且用户收到消息时,GCM将在后台打开websockets服务并重新启用实时聊天功能。为Android使用的WebSockets聊天

我已阅读关于WebSocket和电池寿命的担忧,但如果我仅在用户有新消息作出响应时才使用GCM打开WebSockets,这是否可以实现实时聊天?

回答

2

不,我不这么认为.GCM不是100%可靠。 他们的文件说:

GCM通常提供的消息在发送后即可。但是,这可能不总是可能的。例如,如果平台是Android,则该设备可能被关闭,脱机或不可用。或者,发件人本身可能会要求在设备通过使用delay_while_idle标志变为活动状态之前不会传递消息。最后,GCM可能会故意拖延消息,以防止应用程序消耗过多资源并对电池寿命产生负面影响。

当发生这种情况,GCM会存储消息并且只要它是可行的实现它。虽然这在大多数情况下都是正常的,但有些应用程序可能迟迟不会传递延迟消息。例如,如果消息是来电或视频聊天通知,则只有在呼叫终止之前的一段时间内才有意义。或者如果该消息是对事件的邀请,则在事件结束后收到该消息将是无用的。

所以,你可以使用GCM重新连接到的WebSockets如果客户端不接,但一旦连接成功,则所有的通信应该是插座本身。

+0

这就是我究竟是如何设置它。 GCM仅在设备未通过WebSockets连接时使用,否则所有通信均通过WebSockets进行 – Sauron