• XMPP作为一个工具的意义


    • 学习XMPP就是拥有位当前应用程序添加实时,推送,社交功能所需的工具。虽然浏览器不支持XMPP通讯,但是我们可以通过BOSH技术解决。
    • 一个XMPP网络包含如下

    服务器:为XMPP节提供路由,是否支持server-Server通讯也是很重要的特性,常见的服务有openfire,tigase,m-link等

    客户端:一般为人类驱动的实体,也可以是自动化的机器人实体(聊天机器人)

    组件:XMPP扩展(XEP-0114)使用该扩展协议可以实现服务实现无关的扩展,组件作为服务器内部可单独寻址的实体

    插件:特定服务实现下的扩展,不大可能会移植

    • XMPP寻址

    JID:格式     节点@域/资源  

    • XMPP节

    XMPP通讯是以XML为基础,研究XMPP协议的话必须要了解他的一些基础元素和属性

    xmpp流由两份xml组成,通讯的每个方向都有一份,根元素为stream:stream

    子元素为可路由的节点和与流相关的顶级元素,通用元素

    presence 相关出席信息

    message 消息

    iq 信息与查询

    • XMPP连接的生命周期 具体可以看标准协议RFC-6120
    • 如何在web中使用xmpp

    以前更新数据使用定时刷新,使用AJAX改善了体验,实质上没有变化。我们可以使用长轮询技术(客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求,ie上用iframe,别的浏览器用xhr来实现)达到更实时的更新效果。XMPP中这种技术,被称之为BOSH,其实Comet和反向http也是类似的东西。很多xmpp服务器中内置该功能,也有单独的BOSH连接管理服务BOSH帮助http客户端建立一个新的XMPP会话,然后把XMPP节包装到一个特殊的body元素通过http回传,这样一来http应用程序就可以控制一个真正的xmpp会话,由于长轮询的高效率和低延迟,因此其效果和原生TCP连接差不多。

    使用长轮询技术需要使用js进行跨域访问,目前我们通过Strophe的JS类库实现了轻松优雅的在http下访问xmpp

    http://kwok.io/
  • 相关阅读:
    设计模式---适配器模式
    【面经】2019-4-1 杭州边锋网络面经
    web前端基础——jQuery编程进阶
    web前端基础——jQuery编程基础
    web前端基础——初识HTML DOM编程
    web前端基础——初识JavaScript
    web前端基础——初识CSS
    web前端基础——初识HTML
    CentOS 6.5上安装python2.7、pip以及Python命令行补全和yum冲突解决
    Python中常用技巧整理
  • 原文地址:https://www.cnblogs.com/yuzukwok/p/3440683.html
Copyright © 2020-2023  润新知