2011-12-18 59 views
1

Currenlty我正在尝试为Android开发一个简单的聊天应用程序。我想创建一些与WhatsApp类似的东西。因为它应该是实时的,我认为C2DM是用户向另一个用户发送消息时发送通知的最佳方式。C2DM推式聊天应用程序

因为我已经读过C2DM是只为会话建立的,而不是消息,我必须找到一种方法将这些消息传递给其他联系人。

现在,我有一个应用程序服务器,可以发送C2DM通知。但是,发送和接收“文本消息”的最好和最节能的方式是什么?

我已经阅读了关于轮询的内容,但这并不是说我认为节能。我已经阅读了一些关于'XMPP'的内容,但是我怎样才能将它与C2DM相结合呢?

+0

你有没有想过C2DM的成本? – the100rabh

+0

如果你的意思是能源成本?是的,因为已经有一个开放的C2DM连接,您可以使用此连接。我也看到了不同的演讲,其结果是C2DM是推动notificatoins最节能的方式。 – Sander

+0

如果我们要在服务器端 使用轮询 检查新鲜的If-Modified-由于=> 304,如果没有新的 投票尽可能少 待机功耗〜5-8毫安 但在调查中,网络每次短调查结果为115-200毫安 〜0.5毫安时(无线电持续一段时间) 〜144毫安时/天,5分钟轮询频率 〜10%的电池! 〜48 mAh /天,轮询频率为15分钟 – Sander

回答

0
  1. 用户A向用户B发送消息,即向应用服务器发送消息。
  2. 您的应用程序服务器收到从A到B的消息。它向B发送C2DM通知,告知B有新数据。
  3. 用户B接收到新的数据的C2DM通知,连接到你的应用服务器和检索来自用户A.

这种机制只推数据的消息,也没有投票。

+0

谢谢,但是从应用程序服务器中检索消息的能源效率最高的方法是什么?我想用一个webrequest? – Sander

+0

这不是一个微不足道的问题。每次用户拥有新数据时都会发出http请求。它肯定比投票更有效。如果您询问XMPP,我不知道。 Whatsapp使用XMPP,这个协议是用于实时消息传递的,因此总体而言它应该能够更好地满足您的需求,因为这正是您要做的。 – aromero

+0

是的,如果我是对的,WhatsApp会使用XMPP。但是,我怎样才能将WhatsApp与XMPP结合起来?因为如果XMPP是实时的,如果我是对的,我不必使用C2DM。或者如果有新消息,我必须检查XMPP服务器。什么是最好的选择呢? – Sander