`
lijinyan3000
  • 浏览: 46563 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论
阅读更多

本文来源: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 文件内容的方式来实现自己的功能

下图展示了三者之间的关系:

y1pvDpHi3Ot0Wg6U_yLy5UtJ-yJWtkdBlbFiKD_IJAfdGw1iRm7z5_MnqfPg_OF-tfeMLvdfGzwwYZg6BKZv97W1w.png


从图上可以了解到,client 端和server端都可以通过插件的方式来进行扩展,smack是二者传递数据的媒介。

嗯,今天就写到这里吧,画图花了好久的时间呀。下一篇介绍一下如何开发基于Spark 的插件程序,并总结一些我自己的一些心得,举一个实际的例子,需要涉及到的一些XML 文件的解析与生成,还有Spark、Smack 自己提供的API ,还有ant 的一些基本知识

分享到:
评论

相关推荐

    Java开发 基于Xmpp的IM即时通讯项目

    Java开发 基于Xmpp的IM即时通讯项目

    XMPP协议的IM客户端IMPanda

    有感于3Q大战,自己编写了一个XMPP协议的客户端,目前只实现了简单的基础功能,可以发送消息.其他功能正在开发中.默认已经注册了一个GTalk帐号供测试,大家有自己的GMail帐号也可以直接输入测试.

    IM_SRC2.1.rar_IM即时_delphi_delphi xmpp_im_xmpp

    基于XMPP的企业即时通讯IM源代码,delphi开发,包括所有资源文档

    iphone 开发XMPP类型IM时需要的框架XMPPFrameWork

    iphone开发iM+XMPP协议类的聊天程序必须的框架XMPPFrameWork 需要操作系统是Mac_os_X 10.6 +Xcode4以上版本。。

    iphone 开发XMPP类型IM时需要的框架XMPPFramework

    iphone开发iM+XMPP协议类的聊天程序必须的框架XMPPFrameWork 需要操作系统是Mac_os_X 10.6 +Xcode4以上版本。。

    Android资料_XMPP

    资源包括 基于XMPP的多方通信系统研究与实现.pdf 基于XMPP的P2P即时通信系统的研究及实现.kdh ...XMPP协议分析及客户端开发.nh XMPP_3920_最靠谱的中文翻译文档.docx XMPP-RFC3920中文.pdf Android中的XMPP应用.pdf

    XMPP_IM.rar_Java编程_Java_

    开发你自己的XMPP IM开发你自己的XMPP IM

    XMPP协议大全

    XMPP协议的中文版本,适合开发IM的学习。openfire是基于XMPP协议的消息服务器,能基于它实现IM功能的开发。

    XMPP_OPenfire即时通讯IM-android版

    android下的XMPP对应smack4.1.4下实现注册,登录,单聊文本,语音,图片发送,添加好友,修改密码,注销等功能(Androidstuido开发环境)

    IM服务端开发文档

    基本信息 1 后台管理地址 1 安装 2 数据库 2 插件功能 2 XMPP协议 6 XMPP协议的原理介绍 6 XMPP协议的文档 6 XMPP的基本网络结构 7 ...实现自己的插件plugin类 25 打包成jar或者war文件 26 其他参考信息 28

    XMPP权威指南 (利用jabber构建实时聊天应用).pdf

    XMPP由Jabber软件基金会开发,最早在Jabber上实现。Jabber项目由Jeremie Miller在1998年开始的一个免费、开源的项目,用于提供给MSN、Yahoo!的IM服务。由于XMPP是一种基于XML架构的开放式协议,在IM通讯中被广泛采用...

    XMPP权威指南 -中文.pdf

    XMPP权威指南 -中文.pdf IM开发 IM开发原理 IM开发基础知识

    XMPP中文文档

    XMPP_官方中文翻译文档.pdf ,我也是从这些开始学习openfire的,移动开发消息推送、IM接入都可使用等

    XMPP-RFC3920中文

    XMPP是一个开放式的XML...在 RFC 2779 [IMP-REQS] 中指定的提供即时消息和出席信息功能的扩展,定义在 XMPP-IM 协议 [the Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence] 中。

    XMPP协议及其服务器端的Openfire插件开发.doc

    XMPP协议及其服务器端的Openfire插件开发XMPP背景知识XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。绊过扩展以后的XMPP可以通过发送扩展的信息来处理用户的...

    xmpp之RFC3921

    XMPP的IM协议,自制了目录结构。是IM开发的利器。

    Tsung_测试XMPP_安装使用说明

    tsung是用erlang开发的一款简单易用的压力测试工具,目前仅支持linux各版本系统安装,有tar.gz和deb两种安装文件, 目前我们测试用的是CentOS或RedHat两种操作系统,因此选择tar.gz安装文件,总的来说tsung工具有...

    XMPP权威指南

    XMPP由Jabber软件基金会开发,最早在Jabber上实现。Jabber项目由Jeremie Miller在1998年开始的一个免费、开源的项目,用于提供给MSN、Yahoo!的IM服务。由于XMPP是一种基于XML架构的开放式协议,在IM通讯中被广泛采用

    基于xmpp的android IM.zip

    该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件开发商及电信营运商共同研发改良。 Android操作系统的特点包括: 开放源代码:Android系统采用开放源代码模式,允许开发者自由...

    android-chat-开源免费的IM,功能和UI符合国内习惯,比XMPP具有更适合移动端的协议,可以作为IM组件代替环信、融云、网易云信等云通讯和XMPP http://docs.wildfirechat.cn.zip

    集成client部分,支持快速集成,具体参考jitpack-wildfire.chatUI(chat)部分,目前不支持快速集成,需要你自行下载,并将代码移动到你自己的项目,且必须是application module,不能作为library module引入的原因是...

Global site tag (gtag.js) - Google Analytics