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/
  • 相关阅读:
    面条代码 vs. 馄沌代码
    GraphQL 到底怎么用?看看这个例子就知道了
    程序员难逃二八法则,如何晋升为头部 20% 玩家?
    正则匹配负正数和负小数
    js、Jquery处理自动计算的输入框事件
    mobile easyui兼容实体数据(tree插件为例)
    framework7中一行的字如果过多就省略号显示的CSS写法
    PHP获取系统时间不对的解决办法(转载)
    BZOJ 3156: 防御准备
    P4098 [HEOI2013]ALO
  • 原文地址:https://www.cnblogs.com/yuzukwok/p/3440683.html
Copyright © 2011-2022 走看看