我打算在 Android 中实现一个聊天应用程序,并且需要做出一些与轮询服务器以获取更新相关的设计决策:
我应该多久轮询一次新消息?每分钟轮询会是一个不错的选择吗?
如何支持实时聊天?如果用户发送消息,是否应该每 5 秒进行一次轮询,然后在没有收到新消息的情况下返回长轮询间隔?
我还需要确保应用程序不会很快耗尽电池电量。我需要在与 WhatsApp 类似的线路上设计应用程序。我不确定它如何管理轮询,但我知道它不是电池杀手。
我打算在 Android 中实现一个聊天应用程序,并且需要做出一些与轮询服务器以获取更新相关的设计决策:
我应该多久轮询一次新消息?每分钟轮询会是一个不错的选择吗?
如何支持实时聊天?如果用户发送消息,是否应该每 5 秒进行一次轮询,然后在没有收到新消息的情况下返回长轮询间隔?
我还需要确保应用程序不会很快耗尽电池电量。我需要在与 WhatsApp 类似的线路上设计应用程序。我不确定它如何管理轮询,但我知道它不是电池杀手。
轮询不是此类应用程序的答案。如果您的应用程序完全基于 Android,您应该查看 Google Cloud Messaging Framework ( http://developer.android.com/google/gcm/index.html )。
这允许您通过 xmpp(或 http ping 拉)将消息推送到单个客户端。这样他们几乎可以立即获得更新。
对于聊天,我会进行两种不同的投票。首先,如果应用程序在后台(每分钟或类似的东西)并且如果应用程序每秒启动一次或者可能是长轮询:http ://en.wikipedia.org/wiki/Push_technology#Long_polling