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

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

ID:24743723

大小:1.13 MB

页数:90页

时间:2018-11-16

openfire处理消息流程,及openfire详细信息_第1页
openfire处理消息流程,及openfire详细信息_第2页
openfire处理消息流程,及openfire详细信息_第3页
openfire处理消息流程,及openfire详细信息_第4页
openfire处理消息流程,及openfire详细信息_第5页
资源描述:

《openfire处理消息流程,及openfire详细信息》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、.XMPP介绍ExtensibleMessagingandPresenceProtocol,简单的来讲,它就是一个发送接收处理消息的协议,但是这个协议发送的消息,既不是二进制的东东也不是字符串,而是XML。正是因为使用了XML作为消息传递的中介,Extensible才谈的上,不是么?IMInstantMessenger,及时通信软件,就是大家使用的QQ、MSNMessenger和Gtalk等等。其中Gtalk就是基于XMPP协议的一个实现,其他的则不是。当前IM几乎作为每个上网者必然使用的工具,在国外的大型企业中有一些企业级的IM应用,但是其商业价值还没完全发

2、挥出来。设想既然XMPP协议是一个公开的协议,那么每个企业都可以利用它来开发适合本身企业工作,提高自身生产效率的IM;甚至,你还可以在网络游戏中集成这种通信软件,不但让你可以边游戏边聊天,也可以开发出适合游戏本身的IM应用,比如说一些游戏关键场景提醒功能,团队语音交流等等都可以基于IM来实现。SparkSmack和Openfire开源界总是有许多有趣的东东,这三个合起来就是一个完整的XMPPIM实现。包括服务器端——Openfire,客户端——Spark,XMPP传输协议的实现——Smack(记住,XMPP是一个协议,协议是需要实现的,Smack起到的就是这样

3、的一个作用)。三者都是基于Java语言的实现。Spark提供了客户端一个基本的实现,并提出了一个很好的插件架构,这对于开发者来说不能不说是一个福音。我强烈建议基于插件方式来实现你新增加的功能,而不是去改它的源代码,这样有利于你项目架构,把原始项目的影响降到最低。Openfire是基于XMPP协议的IM的服务器端的一个实现,虽然当两个用户连接后,可以通过点对点的方式来发送消息,但是用户还是需要连接到服务器来获取一些连接信息和通信信息的,所以服务器端是必须要实现的。Openfire也提供了一些基本功能,但真的很基本的!庆幸的是,它也提供插件的扩展,像Spark一样

4、,同样强烈建议使用插件扩展的方式来增加新的功能,而不是修改人家的源代码。Smack是一个XMPP协议的Java实现,提供一套可扩展的API,不过有些时候,你还是不得不使用自己定制发送的XML文件内容的方式来实现自己的功能下图展示了三者之间的关系:.从图上可以了解到,client端和server端都可以通过插件的方式来进行扩展,smack是二者传递数据的媒介。ApacheMINAOpenfire的通信处理基于ApacheMINA框架实现。ApacheMINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序。它提供了一个通过JavaNI

5、O在不同的传输例如TCP/IP和UDP/IP上抽象的事件驱动的异步API。  ApacheMINA也称为:  ●NIO框架库  ●客户端服务器框架库  ●一个网络套接字库  MINA虽然简单但是仍然提供了全功能的网络应用程序框架:  ●为不同的传输类型提供了统一的API:  ○通过JavaNIO提供TCP/IP和UDP/IP支持  ○通过RXTX提供串口通讯(RS232)  ○In-VM管道通讯  ○你能实现你自己的API!  ●过滤器作为一个扩展特性;类似Servlet过滤器  ●低级和高级的API:  ○低级:使用字节缓存(ByteBuffers)  ○高

6、级:使用用户定义的消息对象(objects)和编码(codecs)  ●高度定制化线程模型:  ○单线程  ○一个线程池  ○一个以上的线程池(也就是SEDA).  ●使用Java5SSL引擎提供沙盒(Out-of-the-box)SSL•TLS•StartTLS支持  ●超载保护和传输流量控制  ●利用模拟对象进行单元测试  ●JMX管理能力  ●通过StreamIoHandler提供基于流的I/O支持  ●和知名的容器(例如PicoContainer、Spring)集成  ●从Netty平滑的迁移到MINA,Netty是MINA的前辈。命名规则Openfi

7、re中常见的类名后缀命名包括Starter、Plugin、Listener、Dispatcher、Handler、Manager、Provider,通常情况下,这些命名类包括如下意义:XXStarter系统启动类,如org.jivesoftware.openfire.starter.ServerStarter,调用其start()方法可启动系统应用。XXListener业务的最终处理类。XXDispatcher调度类,其中有很多关键方法,如addListener(),以组合的方式,为类内定义的静态Set实例添加XXListener对象。

8、以便调用dispatchEvent(S

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。