openfire处理消息流程,及openfire详细信息.doc

openfire处理消息流程,及openfire详细信息.doc

  1. 1、本文档共87页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
openfire处理消息流程,及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 语言的实现。 Spark 提供了客户端一个基本的实现,并提出了一个很好的插件架构,这对于开发者来说不能不说是一个福音。我强烈建议基于插件方式来实现你新增加的功能,而不是去改它的源代码,这样有利于你项目架构,把原始项目的影响降到最低。 Openfire 是基于XMPP 协议的IM 的服务器端的一个实现,虽然当两个用户连接后,可以通过点对点的方式来发送消息,但是用户还是需要连接到服务器来获取一些连接信息和通信信息的,所以服务器端是必须要实现的。Openfire 也提供了一些基本功能,但真的很基本的!庆幸的是,它也提供插件的扩展,像Spark 一样,同样强烈建议使用插件扩展的方式来增加新的功能,而不是修改人家的源代码。 Smack 是一个XMPP 协议的Java 实现,提供一套可扩展的API,不过有些时候,你还是不得不使用自己定制发送的XML 文件内容的方式来实现自己的功能 下图展示了三者之间的关系: 从图上可以了解到,client 端和server端都可以通过插件的方式来进行扩展,smack是二者传递数据的媒介。 Apache MINA Openfire的通信处理基于Apache MINA框架实现。Apache MINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序。它提供了一个通过Java NIO在不同的传输例如TCP/IP和UDP/IP上抽象的事件驱动的异步API。   Apache MINA 也称为:   ● NIO 框架库   ● 客户端服务器框架库   ● 一个网络套接字库   MINA虽然简单但是仍然提供了全功能的网络应用程序框架:   ● 为不同的传输类型提供了统一的API:   ○ 通过Java NIO提供TCP/IP 和 UDP/IP支持   ○ 通过RXTX提供串口通讯(RS232)   ○ In-VM管道通讯   ○ 你能实现你自己的API!   ● 过滤器作为一个扩展特性; 类似Servlet过滤器   ● 低级和高级的API:   ○ 低级: 使用字节缓存(ByteBuffers)   ○ 高级: 使用用户定义的消息对象(objects)和编码(codecs)   ● 高度定制化线程模型:   ○ 单线程   ○ 一个线程池   ○ 一个以上的线程池(也就是SEDA)   ● 使用Java 5 SSL引擎提供沙盒(Out-of-the-box) SSL ? TLS ? StartTLS支持   ● 超载保护和传输流量控制   ● 利用模拟对象进行单元测试   ● JMX管理能力   ● 通过StreamIoHandler提供基于流的I/O支持   ● 和知名的容器(例如PicoContainer、Spring)集成   ● 从Netty平滑的迁移到MINA, Netty是MINA的前辈。 命名规则 Openfire中常见的类名后缀命名包括Starter、Plugin、Listener、Dispatcher、Handler、Manager、Provider,通常情况下,这些命名类包括如下意义: XXStarter 系统启动类,如org.jivesoftware.openfire.starter.ServerStarter,调用其s

文档评论(0)

duyingjie1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档