我需要为基于android的客户端创建一个聊天/通信服务器。
android聊天客户端将通过3g或wifi网络连接到互联网,我需要以下简单的功能
来自桌面应用程序开发,我的脑海中只有基于套接字的解决方案,服务器应该是一个基于java的应用程序。
因此问题是:基于套接字的方法是可行的还是应该使用其他通信协议。
发布于 2012-10-01 06:42:38
虽然使用TCP套接字可以完成这项工作,但这并不是一个好主意,因为您必须处理很多事情,如消息格式、流等。使用一个已经可用的消息协议和库。
我建议研究一下XMPP,它有一套实现设备间消息传递的开放标准。一个优点是有大量的库可用于实现XMPP客户端和服务器。
为了在Android设备上实现XMPP客户端,您可以使用一个名为拍打的库。它实际上是一个基于Java的库。我使用阿斯马克实现了一个Facebook聊天客户端,这是一个Android的Smack端口。Smack文档也适用于Asmack。然而,Asmack已经两年没有更新了,也有一些问题,我一直在考虑将我的客户更改为Smack,看看新版本是否适合Android。
至于实现XMPP服务器,您可以查看开诚布公,它是由创建Smack的相同人员制作的。我还没有使用这个,但是项目页面有很多关于建立Openfire的文档。从我使用的Smack库的质量来判断,我相信Openfire会运行得很好。
祝好运!
发布于 2012-10-01 05:35:03
服务器的另一端用什么编写并不重要,因为HTTP是一种高级协议。实际上,除非您对GCM做了一些事情,否则您可能最终会使用套接字。套接字对电池来说是重量级的,你可能只希望偶尔保持这个套接字来检查聊天服务器上的更新是否与应用程序的使用成一定比例。还请记住,您不能将网络连接保持在主线程上,并且通常通过服务访问网络连接。
https://stackoverflow.com/questions/12667918
复制相似问题