您的位置:首页 > 其它

XMPP即时通信资料:

2015-12-23 21:56 218 查看
//-------------------------------------------

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: