XMPP协议的原理介绍

XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。 XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分; 在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 已经发展成为基本协议单元,定义所有即时通信协议应该支持的核心功能集。 XMPP 和SIMPLE 两种协议是架构,有助于实现IMPP协议所描述的规范。PRIM 最初是基于即时通信的协议,与XMPP 和SIMPLE 类似,但是己经不再使用 1.    XMPP 协议是公开的,由JSF开源社区组织开发的。XMPP 协议并不属于任何的机构和个人,而是属于整个社区,这一点从根本上保证了其开放性。 2.    XMPP 协议具有良好的扩展性。在XMPP 中,即时消息和到场信息都是基于XML 的结构化信息,这些信息以XML 节(XML Stanza)的形式在通信实体间交换。XMPP 发挥了XML 结构化数据的通用传输层的作用,它将出席和上下文敏感信息嵌入到XML 结构化数据中,从而使数据以极高的效率传送给最合适的资源。基于XML 建立起来的应用具有良好的语义完整性和扩展性。 3.    分布式的网络架构。XMPP 协议都是基于Client/Server 架构,但是XMPP协议本身并没有这样的限制。网络的架构和电子邮件十分相似,但没有结合任何特定的网络架构,适用范围非常广泛。 4.    XMPP 具有很好的弹性。XMPP 除了可用在即时通信的应用程序,还能用在网络管理、内容供稿、协同工具、档案共享、游戏、远端系统监控等。 [...]

OpenFire安装好后,我又安装了JWChat做为Client,目前OpenFire 已经支持HTTP Binding,因此JWChat不用再依赖JHB(JabberHTTPBinding),但是在实际安装时还是遇到一些问题,这里记录一下: 1.  首先是下载JWChat 1.0,http://blog.jwchat.org/jwchat/download/; 2.  直接解压安装包(不是安装)到自己的目录; 3.  这里要注意解压后的文件不能直接使用,需要把所有以“.js.js”结尾的文件改为“.js”文件,把“.html.html”结尾的文件改为“.html”文件; Linux 下运行如下命令修改文件名: rename “.js.js” “.js” *.js.js rename “.html.html” “.html” *.html.html 另外压缩包里提供了多语言版本,不过需要我们手工改变其扩展名,如想要中文界面则需修改“.zh_CN”结尾的文件名 rename “.js.zh_CN” “.js” *.js.zh_CN rename “.html.zh_CN” “.html” *.html.zh_CN 4.  检查Apache 2的/usr/local/apache2/modules目录下是否包含 mod_proxy.so, mod_proxy_http.so和mod_rewrite.so,如果没有则需要重新编译apache (我就重新build了几次),注意在build时需要在./configure命令行上添加 a)         enable-rewrite=shared b)        enable-proxy=shared c)        enable-proxy-http=shared 5.  检测/apache2/conf/httpd.conf文件中是否包含如下配置,如果没有需要手工添加 a)         LoadModule rewrite_module modules/mod_rewrite.so b)        LoadModule proxy_module modules/mod_proxy.so c)        LoadModule proxy_http_module modules/mod_proxy_http.so [...]

最近在Linux上安装了OpenFire 3.7.0,故在这里留下安装步骤: 1.       首先下载OpenFire的Linux安装包,下载地址http://www.igniterealtime.org/downloads/index.jsp#openfire; 2.       复制安装包到Linux服务器上,并运行; 如果下载的是RPM: rpm -ivh openfire-3.6.2-1.i386.rpm 默认安装到/opt/openfire目录下; 如果下载的是.tar.gz: tar –xzvf openfire-3.6.2-1.i386.tar.gz mv openfire /opt 3.       由于我的Linux还没有安装Java,所以有下载了Java JDK1.5.0安装包(OpenFire需要1.5.0以上版本),安装后在/etc/profile后面添加配置如下: JAVA_HOME=/usr/java/jdk1.5.0_16;export JAVA_HOME PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH 如果不知道当前JDK版本,用“java –version”查询, 如果需要下载或升级连接http://java.sun.com; 4.       我没有使用OpenFire自带的MYSQL,所以在我的Oracle数据库中添加新的TableSpace和用户,并把”classes12.jar”复制到/opt/openfire/lib目录下,以方便OpenFire找到JDBC包; 5.       在Linux上启动OpenFire # /etc/init.d/openfire Usage /etc/init.d/openfire {start|stop|restart|status|condrestart|reload} # /etc/init.d/openfire start 6.       打开浏览器,输入http:http://your.ip:9090/,进入配置页面 a)       首先选择语言,当然是中文 b)      其次配置域ip和控制台端口,端口默认是9090 c)      然后选择数据库连接, i.              “嵌入的数据库”就是使用OpenFire自带数据库; ii.              “标准数据库连接”是连接外部数据库,我是连接外部Oracle数据库 d)      进入“标准数据连接”配置页面,配置Oracle连接;配置后会在外部数据库中创建表和字段; e)       进入用户和组配置界面, [...]

WebIM概念:网页即时通信软件 (Web Instant Messenger ) 现在WebIM可谓非常流行,其中已实现WebIM的厂商包括大名鼎鼎的sohu,Tencent QQ,Microsoft MSN,Google Gtalk,新浪,alibaba的淘宝旺旺,很多很多,基于WebIM的聊天引擎设计思路无非以下几种: 1.     Ajax无刷新交互,设计一种时间间隔定期获取数据(如先每5秒刷新一次,再‘按5,10,15,……刷新一次获取数据,目前利用这一思路实现聊天引擎的开源产品很多,大家可以自己到open-open网站查阅) 2.     基于Pushlet技术的聊天引擎的实现 3.     基于Comet技术的聊天引擎的实现 4.     基于Jetty服务器的Comet技术的聊天引擎的实现 5.     基于XMPP协议的聊天引擎的设计与实现(可以利用Flash或Ajax或Js与Jabber服务器交互)

© 2011 科创网 豫ICP备11029392号 Suffusion theme by Sayontan Sinha