本文来源:http://phoenixtoday.blogbus.com/logs/17246727.html
最近没在Blog 上露脸,为撒类?应师兄的请求,帮他研究一个XMPP IM 软件的开发。反正最近也没什么大事,每天都想写写代码练练手,就帮忙呗。研究了一通觉得还挺有趣,自己这几天查国内外的资料,发现国内关于这方面间的软件资料太少了,就想在这里写几篇关于此类IM 软件开发的文章。不过别看东西小,涉及的模块可不少。
所以我基本上分为三篇文章来介绍此类软件的开发:
第一篇是关于XMPP 协议是啥,IM 是啥以及一个比较有名的开源实现,该开源实现包括三个部分(Spark、Smack和Openfire);
第二篇讲如何开发基于Spark 的客户端IM 插件部分;
第三篇讲如何开发基于Openfire 服务器端的插件部分。
好了,进入正题吧。
什么是XMPP?
Extensible Messaging and Presence Protocol,简单的来讲,它就是一个发送接收处理消息的协议,但是这个协议发送的消息,既不是二进制的东东也不是字符串,而是XML。正是因为使用 了XML作为消息传递的中介,Extensible 才谈的上,不是么?嘿嘿。再详尽的东西,我也就不多介绍了,大家可以去百度百科里查看下,链接在这里
什么是IM ?
Instant Messenger,及时通信软件,就是大家使用的QQ、MSN Messenger和Gtalk等等。其中Gtalk 就是基于XMPP 协议的一个实现,其他的则不是。当前IM 几乎作为每个上网者必然使用的工具,在国外的大型企业中有一些企业级的IM应用,但是其商业价值还没完全发挥出来。设想既然XMPP 协议是一个公开的协议,那么每个企业都可以利用它来开发适合本身企业工作,提高自身生产效率的IM;甚至,你还可以在网络游戏中集成这种通信软件,不但让你 可以边游戏边聊天,也可以开发出适合游戏本身的IM 应用,比如说一些游戏关键场景提醒功能,团队语音交流等等都可以基于IM来实现。说了这么多,就是一个意思,其商业价值远远比你想的高!
Spark Smack 和 Openfire
开源界总是有许多有趣的东东,这三个合起来就是一个完整的XMPP IM 实现。包括服务器端--Openfire,客户端--Spark,XMPP 传输协议的实现--Smack(记住,XMPP是一个协议,协议是需要实现的,Smack起到的就是这样的一个作用)。三者都是基于Java 语言的实现,因此对于熟悉Java 的开发者来说不是很难
Spark 提供了客户端一个基本的实现,并提出了一个很好的插件架构,这对于开发者来说不能不说是一个福音。我强烈建议基于插件方式来实现你新增加的功能,而不是去改它的源代码,这样有利于你项目架构,把原始项目的影响降到最低,文章以后的部分也是基于这种插件体系进行开发的
Openfire 是基于XMPP 协议的IM 的服务器端的一个实现,虽然当两个用户连接后,可以通过点对点的方式来发送消息,但是用户还是需要连接到服务器来获取一些连接信息和通信信息的,所以服务器端是必须要实现的。Openfire 也提供了一些基本功能,但真的很基本的!庆幸的是,它也提供插件的扩展,像Spark 一样,我同样强烈建议使用插件扩展的方式来增加新的功能,而不是修改人家的源代码。
Smack 是一个XMPP 协议的Java 实现,提供一套可扩展的API,不过有些时候,你还是不得不使用自己定制发送的XML 文件内容的方式来实现自己的功能
下图展示了三者之间的关系:
从图上可以了解到,client 端和server端都可以通过插件的方式来进行扩展,smack是二者传递数据的媒介。
嗯,今天就写到这里吧,画图花了好久的时间呀。下一篇介绍一下如何开发基于Spark 的插件程序,并总结一些我自己的一些心得,举一个实际的例子,需要涉及到的一些XML 文件的解析与生成,还有Spark、Smack 自己提供的API ,还有ant 的一些基本知识
分享到:
相关推荐
Java开发 基于Xmpp的IM即时通讯项目
有感于3Q大战,自己编写了一个XMPP协议的客户端,目前只实现了简单的基础功能,可以发送消息.其他功能正在开发中.默认已经注册了一个GTalk帐号供测试,大家有自己的GMail帐号也可以直接输入测试.
基于XMPP的企业即时通讯IM源代码,delphi开发,包括所有资源文档
iphone开发iM+XMPP协议类的聊天程序必须的框架XMPPFrameWork 需要操作系统是Mac_os_X 10.6 +Xcode4以上版本。。
iphone开发iM+XMPP协议类的聊天程序必须的框架XMPPFrameWork 需要操作系统是Mac_os_X 10.6 +Xcode4以上版本。。
资源包括 基于XMPP的多方通信系统研究与实现.pdf 基于XMPP的P2P即时通信系统的研究及实现.kdh ...XMPP协议分析及客户端开发.nh XMPP_3920_最靠谱的中文翻译文档.docx XMPP-RFC3920中文.pdf Android中的XMPP应用.pdf
开发你自己的XMPP IM开发你自己的XMPP IM
XMPP协议的中文版本,适合开发IM的学习。openfire是基于XMPP协议的消息服务器,能基于它实现IM功能的开发。
android下的XMPP对应smack4.1.4下实现注册,登录,单聊文本,语音,图片发送,添加好友,修改密码,注销等功能(Androidstuido开发环境)
基本信息 1 后台管理地址 1 安装 2 数据库 2 插件功能 2 XMPP协议 6 XMPP协议的原理介绍 6 XMPP协议的文档 6 XMPP的基本网络结构 7 ...实现自己的插件plugin类 25 打包成jar或者war文件 26 其他参考信息 28
XMPP由Jabber软件基金会开发,最早在Jabber上实现。Jabber项目由Jeremie Miller在1998年开始的一个免费、开源的项目,用于提供给MSN、Yahoo!的IM服务。由于XMPP是一种基于XML架构的开放式协议,在IM通讯中被广泛采用...
XMPP权威指南 -中文.pdf IM开发 IM开发原理 IM开发基础知识
XMPP_官方中文翻译文档.pdf ,我也是从这些开始学习openfire的,移动开发消息推送、IM接入都可使用等
XMPP是一个开放式的XML...在 RFC 2779 [IMP-REQS] 中指定的提供即时消息和出席信息功能的扩展,定义在 XMPP-IM 协议 [the Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence] 中。
XMPP协议及其服务器端的Openfire插件开发XMPP背景知识XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。绊过扩展以后的XMPP可以通过发送扩展的信息来处理用户的...
XMPP的IM协议,自制了目录结构。是IM开发的利器。
tsung是用erlang开发的一款简单易用的压力测试工具,目前仅支持linux各版本系统安装,有tar.gz和deb两种安装文件, 目前我们测试用的是CentOS或RedHat两种操作系统,因此选择tar.gz安装文件,总的来说tsung工具有...
XMPP由Jabber软件基金会开发,最早在Jabber上实现。Jabber项目由Jeremie Miller在1998年开始的一个免费、开源的项目,用于提供给MSN、Yahoo!的IM服务。由于XMPP是一种基于XML架构的开放式协议,在IM通讯中被广泛采用
集成client部分,支持快速集成,具体参考jitpack-wildfire.chatUI(chat)部分,目前不支持快速集成,需要你自行下载,并将代码移动到你自己的项目,且必须是application module,不能作为library module引入的原因是...
利用xmpp开发的iOS im demo。