zoukankan      html  css  js  c++  java
  • 基于XMPP的即时通信系统的建立(三)— 程序设计概览

    XMPP与HTTP的比较

    XMPP的优势

    Ÿ   1. 推送数据

           HTTP只能从服务器哪里请求数据,除非服务器正在响应客户端请求,否则不能向客户端发送数据。但XMPP连接是双向的,任何一方在任何时候都可以向另外一方发送数据,只要连接是打开状态。

    Ÿ   2. 防火墙友好

           XMPP对防火墙和NAT友好,因为服务器到客户端的连接是由客户端发起的,一旦连接,服务器就可以将其所需要的数据推送给客户端。

    Ÿ   3. 增强的安全性

           XMPP构建在TLS和SASL上,具有更好的安全性

    Ÿ   4. 更加丰富的工具箱

           XMPP支持更多的操作

    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

    Ÿ   协议扩展

    如果有扩展协议的需求,应该首先试着组合现有协议或者将协议设计的尽量简洁。

  • 相关阅读:
    Linux下启用异步IO
    ORA-20011 ORA-29913 KUP-11024
    OCP 11G 053题库解析汇总链接(601-712)
    OCP 11G 053题库解析汇总链接(201-400)
    OCP 11G 053题库解析汇总链接(401-600)
    OCP 11G 053题库解析汇总链接(1-200)
    OCP 11G 052题库解析汇总链接
    OCP 11G 051题库解析汇总链接
    Vue外部js引入做为全局变量
    Java实现atoi函数
  • 原文地址:https://www.cnblogs.com/jiyuqi/p/5085989.html
Copyright © 2011-2022 走看看