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/
  • 相关阅读:
    Asp.net文章内容分页
    JQuery文字不间断滚动
    .Net Core利用反射动态加载DLL类库的方法(解决类库不包含Nuget依赖包的问题)
    【Bug】远程登录导致WPF应用程序中的UserControl控件Loaded事件重复触发
    【原创】WPF TreeView带连接线样式的优化(WinFrom风格)
    DataGrid 字体垂直居中
    Elasticsearch.Net
    利用数学归纳法指导编写递归程序
    多种图像格式相互转换工具的开发(附源代码)
    油气大数据分析 第一章 软计算基础(第四、五、六节)
  • 原文地址:https://www.cnblogs.com/yuzukwok/p/3440683.html
Copyright © 2011-2022 走看看