在android中创建聊天应用程序的最佳做法是什么?

时间:2012-02-13 18:09:55

标签: android chat

我打算创建一个Android聊天应用。实际上聊天将成为应用程序的一项功能。我想知道有关Android聊天应用程序的最佳实践。我熟悉的两个选项是C2MD,每隔几秒就会对服务器数据库进行一次自定义轮询。

现在,我知道C2MD应该是伟大的,但是根据我的理解,它并不可靠。我试图实现它,它似乎没有工作。此外,如果由于某种原因谷歌结束时发生了某些事情(比如他们的服务器已关闭 - 不太可能但可能发生)我无法联系他们,而且他们正处于他们的时间范围内。

现在,如果我做自己的事情(我发送用户创建的消息的基本方法,然后定期检查服务器以查看是否有任何新消息到达)似乎没问题,除非为了拥有一个体面的用户经验,我对我的服务器的轮询必须像大约5秒左右,这就像疯了一样咀嚼电池。这是使用这种方法的主要缺点。

所以,我想知道有更好的方法,我不知道。请任何帮助,架构结构,任何有用的东西。

1 个答案:

答案 0 :(得分:8)

您应该考虑使用XMPP。你可以搜索StackOverflow for Android XMPP,你最终可能会here推荐使用Smack的一些变体(一个XMPP客户端库)。

更新以发表评论

首先,XMPP是一种协议,而不是客户端或服务器。使用它的一个好处是可以广泛使用XMPP客户端和服务器实现。 Wikipedia article解决了您的大部分问题。

关于你对gtalk的评论:

  

XMPP网络的架构类似于电子邮件;任何人都可以运行自己的XMPP服务器,而且没有中央主服务器。

关于民意调查:

  

XMPP可以通过两种方式使用HTTP:轮询[21]和绑定。[22]现在不推荐使用的轮询方法实质上意味着XMPP客户端通过HTTP'GET'和'POST'请求定期提取(和发布)存储在服务器端数据库上的消息。通过HTTP绑定,客户端使用寿命更长的HTTP连接,以便在发送消息后立即接收消息。这种通知推送模型比轮询更有效,其中许多民意调查没有返回新数据。

它也可以使用WebSockets。

关于.NET集成(如果你需要它...如果你不需要,你可以运行自己的XMPP服务器),你可以只搜索StackOverflow for XMPP和.NET,你可以得到一些问题/想法.NET服务器与XMPP服务器的集成,例如:Opensource .Net Jabber/XMPP server?