zoukankan      html  css  js  c++  java
  • 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/
  • 相关阅读:
    Mybatis 动态sql(转载)
    mapper映射文件配置之select、resultMap(转载)
    mapper映射文件配置之insert、update、delete(转载)
    MyBatis主配置文件(转载)
    函数装饰器和闭包(二)
    函数装饰器和闭包(一)
    指针的指针(二)
    指针的指针(一)
    Makefile基础(三)
    Python之多线程与多进程(二)
  • 原文地址:https://www.cnblogs.com/yuzukwok/p/3440683.html
Copyright © 2011-2022 走看看