XMPP与HTTP的比较(http://www.cnblogs.com/jiyuqi/tag/xmpp/)
编程
XMPP的优点
浏览器
1. 推送数据
缓存
HTTP只能从服务器哪里请求数据,除非服务器正在响应客户端请求,不然不能向客户端发送数据。但XMPP链接是双向的,任何一方在任什么时候候均可以向另一方发送数据,只要链接是打开状态。
安全
2 防火墙友好服务器
XMPP对防火墙和NAT友好,由于服务器到客户端的链接是由客户端发起的,一旦链接,服务器就能够将其所须要的数据推送给客户端。
网络
3. 加强的安全性
工具
XMPP构建在TLS和SASL上,具备更好的安全性
优化
4. 更加丰富的工具箱
设计
XMPP支持更多的操做
blog
XMPP的不足
1. XMPP是有状态协议
2. XMPP的生态系统较小
3. XMPP有更大的开销
XMPP未对短时间会话和简单请求进行优化,创建、维护和销毁XMPP都须要一些资源。
对于更长的链接和更加复杂的交互,XMPP和HTTP的开销能够忽略不计。
桥接XMPP与Web
主流浏览器暂时没有支持XMPP协议,可是能够经过设置和编程在HTTP链接上创建高效的XMPP会话通道。这种通道的创建使用到了名为HTTP长链接的技术。经过联合使用一个简单的基于HTTP的管理协议以及XMPP链接管理器,咱们能够将XMPP(全部功能)带入到HTTP应用程序中。
长轮询
是早期定时刷新网页获取数据更新的方法改进,服务端经过维持一个空链接,即时通知客户端数据变动。由于每一个请求都可以持续较长时间,所以称为长轮询。人们已经设计了多个库和协议来利用长轮询技术,XMPP是其中一个较早实现,在XMPP中,这种桥接被称为BOSH(Bidirection stream Over Synchronous HTTP,在同步HTTP上传递双向数据流)。
管理链接
XMPP链接能够持续至关长的时间,但HTTP请求确至关短。链接管理器负责维护第三方的XMPP链接并经过HTTP长链接技术提供对链接的访问。
浏览器和链接管理器都使用BOSH协议经过HTTP通讯,并提供了安全功能,链接管理器与服务端通讯就像一个普通的客户端同样,延时也比较低。
并且链接管理器还有以下的优点:
客户端能够切换网络
托管稳固,能够容忍故障
可好性好,链接管理器缓存数据
对防火墙友好(运行与HTTP端口)
让Javascript理解XMPP协议
经过Javascript的Strophe库来实现,能够隐藏底层细节并具备很好的效率。
构建XMPP应用程序
浏览器平台
能够选用jQuery操做用户数据及用户界面。
XMPP服务器
能够选用Tigese或者OpenFire
协议扩展
若是有扩展协议的需求,应该首先试着组合现有协议或者将协议设计的尽可能简洁。