我正在编写一个Android应用程序,功能之一是有一个聊天模块。我选择使用长轮询来实现聊天。
因为我试图避免耗尽用户的手机电池,所以我想在实现中添加一个GCM消息平台,通知设备新的消息。
这样做的想法是,当用户在屏幕上打开应用程序时,使用长轮询,这样进行实时聊天将是快速的,并且不涉及发送大量GCM消息,而在空闲时,服务器将知道用户当前没有轮询,并将向设备发送GCM消息,以便在新消息到达时唤醒它。
我正在努力解决实施这种方法的几个问题:
我的客户是本地Android,Webservice是WCF (C#)。
任何想法都会有帮助。
发布于 2012-11-02 09:42:41
我还没有使用GCM,但我有很多移动消息应用程序的经验,所以我将尝试解释我们遵循的内容。
了解用户状态的最佳方法是什么?
首先,当应用程序处于领先位置时,长时间的民意调查并不是接收即时消息的最佳方式。您需要打开tcp连接才能立即接收它!(希望您的通知也包含该消息)任何类型的轮询都将确保您浪费电池,而不是重新接收即时消息。第二,我认为客户端应该告知服务器其状态(前台/背景),以便服务器知道如何响应。因此,我的建议是使用TCP套接字作为CIR的备份,并在后台使用轮询(以防服务器丢失“客户端转到后台消息”)。
希望这能有所帮助。
https://stackoverflow.com/questions/13192407
复制相似问题