2012-10-01 347 views
1

我需要为基于android的客户端创建聊天/通信服务器。Android聊天服务器

Android的聊天客户端将通过3G或WiFi网络 连接到互联网我需要以下几个简单的功能

  • 注册一个新用户
  • 从一个客户端发送消息到另一个
  • 将有大约一次连接500个客户端

来自桌面应用程序开发,我只有基于套接字的解决方案在我心中,服务器应该是一个基于Java的应用程序

所以问题是:基于套接字的方法是否可行或者我应该使用其他通信协议。

回答

0

服务器的另一端写入的内容并不重要,因为HTTP是高级协议。实际上,你可能最终会使用套接字,除非你做了一些关于GCM的事情。套接字是重量级的电池明智的,你可能只想在一段时间内保持套接字一次以检查聊天服务器上的更新,速度与应用的使用成正比。另请注意,您无法在主线程上保留网络连接,并且通常会通过服务访问它。

5

虽然使用TCP套接字可以完成这项工作,但这不是一个好主意,因为您需要处理很多东西,比如消息格式化,流式传输等。使用已经可用的消息协议和库之一。

我建议看看XMPP,它有一套实现设备之间消息传递的开放标准。一个优点是有很多库可用于实现XMPP客户端和服务器。

要在Android设备上实现XMPP客户端,可以使用名为Smack的库。它实际上是一个基于Java的库。我已经使用Asmack实现了一个Facebook XMPP聊天客户端,该客户端是Smack的一个Android端口。 Smack文档也适用于Asmack。不过,Asmack已经两年没有更新,并且有一些问题,我一直在考虑将我的客户改为Smack,以查看新版本是否适合Android。

至于实施一个XMPP服务器,你可以检出Openfire,由制作Smack的同一个人制作。我还没有使用过,但是项目页面有关于设置Openfire的大量文档。根据我使用的Smack库的质量来判断,我敢说Openfire会工作的很好。

祝你好运!

+0

此外,您应该考虑您的应用程序如何使用网络,从性能的角度来看,还包括电池使用时间以及您使用的客户数据量。这里有一些关于这方面的文章http://developer.att.com/developer/forward.jsp?passedItemId=7200042,你也可以在Android上使用ARO工具来查看你的应用程序的效果如何http:// developer .att.com/aro –

+0

@RodBurns,感谢您的输入! –