XMPP:体系架构:
Client,Server,Gateway.三个角色。
1,会话管理层,:卖力客户端会话认证。在线状态,用户联系表等。
2,数据存储器(XDB):连接数据库系统,保持用户信息。通信日志等。
3,连接器管理器:管理与客户端之间的链接。
4,做事器连接器:管理xmpp做事器之间的连接。
5,传输器:建立xmpp做事器与非xmpp做事器通信。
//--------------------------------------------
事情事理:
所有从一个Client到另一个client的jabber和数据都要通过xmpp server.
1,client连接到server。
2,server利用本地目录系统的证书对其认证。
3,client指定目标地址,让server奉告目标状态。
4,server查找,连接并进行相互认证。
5,client间进行交互。
//--------------------------------------------
XMPP:统一的JID地址:
格式:JID=[node\"大众@\"大众]domain[\"大众/\公众resource]
eg:lee@maiziedu.com/res
domain:做事器域名。
node:用户名。
resource:属于用户的位置或设备。
一个用户可以同时以多种资源与同一个XMPP做事器连接。
//--------------------------------------------
XMPP;xml格式定义:
xmpp:xml包括三个元素:
示例:
<stream>
<presence>
<status/>
</presence>
<message>
<body/>
</message>
<iq>
<bind/>
</iq>
</stream>
persence:确定当前用户的状态,在线,忙,下线。
message:封装用户之间的。
iq:信息/要求:是一个要求-相应机制。管理xmpp做事器上两个用户的交流。许可他们通过相应的xml格式的查询和相应。
iq:的属性包括:type:包括:
GET:获取当前域值。SET:设置或者更换get查询的值。
Result:解释成功的相应了先前的查询。
Error:查询和相应中涌现的缺点。
//--------------------------------------------
XMPP:协议簇:XMPP,SASL,TLS,TCP.
XMPP采取SASL作为身份认证的协议。
SASL包含的信息:
<做事名>:XMPP
<初始化序列>
<交流序列>
<安全层协商>
顺序:[TCP]-->[TLS]-->[SASL]-->[XMPP].
//----------------------------------------------
Mina做事器对外供应的一些接口:
IoServer(卖力底层通讯接入)。这个接口在一个线程上卖力套接字的建立。拥有自己的Selector,监听是否有连接被建立。
IoAcceptor(相称于网络运用程序中的做事器端)
IoConnector(相称于客户端);
IoserviceListener(监听器);
IoProcessor(线程干系的接口);
Iosession(当前客户端到做事器真个一个连接实例)
IoSessionConfig(话的配置信息,紧张包括:读缓冲区大小,会话数据吞吐量,打算吞吐量的韶光间隔,指定会话段的空闲韶光,写要求操作超时时间)
IoFilter:过滤器紧张用于悬接通讯层接口与业务层接口。这个接口定义一组拦截器,这些拦截器可以包括日志输出,黑名单过滤,数据的编码与解码等功能,个中数据的encode与decode是最为主要的也是你在利用Mina时最紧张关注的地方。
IoHandler(业务处理逻辑),这个接口卖力编写业务逻辑,也便是吸收,发送数据的地方。
Mina框架的运用分为三个模块:创建连接(Ioserver)---->添加过滤器(IoFilter)--->添加业务处理(IoHandler)。
mina官网:http://mina.apache.org/
//----------------------------------------------
OpenFire:
java措辞编写,基于XMPP协议,开源的实时协作的做事器,具有跨平台的能力。
基于可扩展的WEB掌握管理界面。基于插件的开拓框架,高可扩展性。
稳定支持上万用户的并发操作。
Openfire与客户端采取的是C/S架构,一个做事器要卖力为连接在其上的客户端供应做事。
基于总线的设计办法,各个Module都是单例,利用者通过总线得到Module干系实例,所有的Module大致分为以下几类:
1,供应做事功能,
2,供应处理功能。
3,供应配置功能,
4,供应监听功能,
5,供应网络功能。
//------------------------------------------------
Smack是一个用于和XMPP做事器通信的类库,由此可以实现即时通讯谈天。
1,支持XEP-198规范,记流的管理。
2,原生支持Android。
3,Smack4.1可替代aSmack库。
改进:
1,XMPPConnection变更为接口。
2,重新实现了SASL的认证。
3.添加了IQ要求句柄。
4,XMPPConnection.addPacketListener方法被抛弃了。
5,StringUtils工具类。
6,监听器的变革。
7,连接配置ConnectionConfiguration类利用了Builder设计模式。
大略易用,并且有十分强大的API。
1,利用者不须要进行包级别的编码。
2,利用者不须要熟习XMPP XML格式。
3,供应了大略的设计以进行通讯。许可在每个中设置任意数量的属性,包括java工具。
4,Apache容许下的开源类库。
5,Smack的唯一必要条件是JDK1.6或者更高版本。
官方文档:http://igniterealtime.org/projects/smack/index.jsp