openfire及xmpp简单介绍

1、oprenfirehtml

  一、openfire是采用Java开发,开源的实时协做(RTC)服务器基于XMPP(Jabber)协议。可使用它轻易的构建高效率的即时通讯服务器。浏览器

  二、Openfire安装和使用都很是简单,并利用Web进行管理。单台服务器可支持上万并发用户。安全

  三、因为是采用开放的XMPP协议,可使用各类支持XMPP协议的IM客户端软件登录服务。服务器

2、XMPP(Jabber)协议网络

  1介绍 架构

    XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。所以,基于XMPP的应用具备超强的可扩展性。通过扩展之后的XMPP能够经过发送扩展的信息来处理用户的需求,以及在XMPP的顶端创建如内容发布系统和基于地址的服务等应用程 序。并且,XMPP包含了针对服务器端的软件协议,使之能与另外一个进行通话,这使得开发者更容易创建客户应用程序或给一个配好系统添加功能。并发

  二、定义框架

    XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操做。这个协议可能最终容许因特网用户向因特网上的其余任何人发送即时消息,即便其操做系统和浏览器不一样。 分布式

    XMPP的前身是Jabber, 一个开源形式组织产生的网络即时通讯协议。XMPP目前被IETF国际标准组织完成了标准化工做。标准化的核心结果分为两部分; 操作系统

    核心的XML流传输协议 

    基于XML FreeEIM流传输的即时通信扩展应用 

    XMPP的核心XML流传输协议的定义使得XMPP可以在一个比以往网络通讯协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议可以很是漂亮。 

    XMPP的即时通信扩展应用部分是根据IETF在这以前对即时通信的一个抽象定义的,与其余业已获得普遍使用的即时通信协议,诸如AIM,QQ等有功能完整,完善等先进性。 

    在IETF 中,把IM协议划分为四种协议,即时信息和出席协议(Instant Messaging and Presence Protocol, IMPP)、出席和即时信息协议(Presence and Instant Messaging Protocol, PRIM)、针对即时信息和出席扩展的会话发起协议(Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions, SIMPLE),以及可扩展的消息出席协议(XMPP)。最初研发IMPP 也是为了建立一种标准化的协议,可是今天,IMPP 已经发展成为基本协议单元,定义全部即时通讯协议应该支持的核心功能集。

  3、 XMPP协议的优势

    a. XMPP 协议是公开的,由JSF开源社区组织开发的。

    b. XMPP 协议具备良好的扩展性。

    c. 分布式的网络架构。

    d. XMPP 具备很好的弹性。

    e. 安全性。

  四、XMPP协议网络架构

    XMPP是一个典型的C/S架构,而不是像大多数即时通信软件同样,使用P2P客户端到客户端的架构,也就是说在大多数状况下,当两个客户端进行通信时,他们的消息都是经过服务器传递的(也有例外,例如在两个客户端传输文件时).采用这种架构,主要是为了简化客户端,将大多数工做放在服务器端进行,这样,客户端的工做就比较简单,并且,当增长功能时,多数是在服务器端进行.XMPP服务的框架结构以下图所示.XMPP中定义了三个角色,XMPP客户端,XMPP服务器、网关.通讯可以在这三者的任意两个之间双向发生.服务器同时承担了客户端信息记录、链接管理和信息的路由功能.网关承担着与异构即时通讯系统的互联互通,异构系统能够包括SMS(短信)、MSN、ICQ等.基本的网络形式是单客户端经过TCP/IP链接到单服务器,而后在之上传输XML,工做原理是: 

    (1) ?点链接到服务器; 

    (2) 服务器利用本地目录系统中的证书对其认证; 

    (3) ?点指定目标地址,让服务器告知目标状态; 

    (4) 服务器查找、链接并进行相互认证; 

    (5) ?点之间进行交互;

  5、 XMPP消息格式

    XMPP中定义了3个顶层XML元素: Message、Presence、IQ,下面针对这三种元素进行介绍。

    <Message>

    用于在两个jabber用户之间发送信息。Jsm(jabber会话管理器)负责知足全部的消息,无论目标用户的状态如何。若是用户在线jsm当即提交;不然jsm就存储。

    To : 标识消息的接收方。

    from : 指发送方的名字或标示(id)

    Text: 此元素包含了要提交给目标用户的信息。

    结构以下所示:

    <message to= ‘lily@jabber.org/contact’ type =’chat’>

    <body> 你好,在忙吗</body>

    </message>

    <Presence>

    用来代表用户的状态,如:online、away、dnd(请勿打扰)等。当用户离线或改变本身的状态时,就会在stream的上下文中插入一个Presence元素,来代表自身的状态.结构以下所示:

    <presence>

    From =‘lily @ jabber.com/contact’

    To = ‘yaoman @ jabber.com/contact'

    <status> Online </status>

    </presence>

    <presence>元素能够取下面几种值:

    Probe: 用于向接受消息方法发送特殊的请求

    subscribe: 当接受方状态改变时,自动向发送方发送presence信息。

    < IQ >

    一种请求/响应机制,从一个实体从发送请求,另一个实体接受请求,并进行响应.例如,client在stream的上下文中插入一个元素,向Server请求获得本身的好友列表,Server返回一个,里面是请求的结果.

    <iq > 主要的属性是type。包括:

    Get :获取当前域值。

    Set :设置或替换get查询的值。

    Result :说明成功的响应了先前的查询。

    Error: 查询和响应中出现的错误。

    结构以下所示:

    <iq from =‘lily @ jabber.com/contact’id=’1364564666’ Type=’result’>

 

详情参见:http://www.cnblogs.com/hoojo/archive/2012/06/18/2553975.html    谢谢!

相关文章
相关标签/搜索