IM是Instant Message的缩写,意思是即时通信。所谓即时通信,顾名思义,就是一方发送信息给另一方,另一方能够即时收到信息。
我们身边熟知的即时通信莫过于腾讯QQ了。无论从桌面版,还是到移动版,都有即时通信的身影。不过QQ的IM有它们自己内部的通信协议,并且是对外不公开的。这种技术封闭大大阻碍了前沿技术领域的发展。而随着时代的前进,开源(Open source) 这一振奋人心的概念正在逐步地渗透到软件行业领域里。开源有利于提高软件的质量以及促进技术的发展。比如我们了解的Linux操作系统,大家都能查看其源代码,并且报告错误。因此,市面上很少有Linux的杀毒软件。除了操作系统,还有很多其它的开源项目,其中著名的要属Apache。Apache有许多子项目,比如Tomcat,JMeter,JUnit等知名开源软件。对于即时通信的开源软件,现在所知的是Openfire,以及它的客户端Spark。有兴趣的同学可以查看官网:http://www.igniterealtime.org/
这里我准备利用Socket来实现Android端的即时通信。首先来讲一下工作原理:
如图所示,为了实现手机端的即时通信,我们需要一个中心服务器来管理所有用户。从高层来讲,就是一个用户申请加入到服务器,然后服务器将该用户放到一个容器中(比如说一个队列,当然每个用户是有唯一标识的)。当一个用户想跟另外一个用户发送消息时,他只