XMPP协议介绍
一、xmpp协议工作原理
二、XMPP地址模式
三、xmpp消息格式
xmpp xml包括三个元素,message,presence,iq,也翻译做三种节。
在'jabber:client'和'jabber:server'名字空间中定义了三种 XML 节: <message/>, <presence/>, 和 <iq/>. 另外, 这三种节有五种通用的属性.
通用属性:
(1)to:'to' 属性表示节的预期接收者的 JID.
(2)from:'from' 属性表示发送者的 JID .
(3)id:可选的'id' 属性可以(MAY)用于为节的内部跟踪发送实体,从 IQ 节 语义来讲,就是通过发送和接收这些节来跟踪“请求-应答”型的交互行为。这个可选的(OPTIONAL)'id'属性值在一个域或一个流中是全局唯一的。
(4)type:'type' 属性指明message、presence或 IQ的意图或上下文的详细信息。三种节的通用'type'值是"error",其它值很不一样。
(5)xml:lang:指明缺省语言
1、presence
<presence/> 元素可以被看作一个基本的广播或“出版-订阅”机制,用于多个实体接收某个已订阅的实体的信息(在这里,是网络可用性信息).
2、message
<message/>节类型可以被看作是一个"push"机制用于一个实体推送信息给另一个实体,类似发生在 email 系统中的通信.
3、iq
信息/查询(Info/Query),或曰 IQ,是一个 请求-回应 机制,某些情况下类似[HTTP].
IQ 语义学使一个实体能够向另一个实体做出请求并做出应答.
请求和应答所包含的数据定义在 IQ 元素的一个直接的子元素的名字空间声明中, 并且由请求实体用'id'属性来跟踪这一交互行为.
因而,IQ 交互伴随着一个结构化的数据交换的通用模式例如 get/result 或 set/result。
四、XML流
两个基本概念,XML 流和 XML 节。
XML 流的定义:一个 XML 流是一个容器,包含了两个实体之间通过网络交换的 XML 元素。一个 XML 流是由一个 XML 打开标签 <stream> (包含适当的属性和名字空间声明)开始的,流的结尾则是一个 XML 关闭 L 标签 </stream> 。
在流的整个生命周期,初始化它的实体可以通过流发送大量的 XML 元素,用于流的握手(例如 TLS 握手 或 SASL 握手) 或 XML 节(在这里指符合缺省名字空间的元素,包括<message/>,<presence/>, 或 <iq/> 元素)。
XML 节仅限于<message/>, <presence/>, 和 <iq/> 元素。
流错误:流的根元素可以(MAY)包含一个 <error/> 子元素。
XMPP协议介绍的更多相关文章
- 基于XMPP协议的手机多方多端即时通讯方案
一.开发背景 1.国际背景 随着Internet技术的高速发展,即时通信已经成为一种广泛使用的通信方式.1996年Mirabilis公司推出了世界上第一个即时通信系统ICQ,不到10年间,即时通信(I ...
- IOS基于XMPP协议开发--XMPPFramewok框架(一):基础知识
最近蘑菇街团队的TT的开源,使我对im产生了兴趣,然后在网上找到了XMPPFramework进行学习研究, 并写了以下系列教程供大家参考,有写的不对的地方,请大家多多包涵指正. 目录索引 IOS基于X ...
- XMPP协议的原理介绍
XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测.它在促进服务器之间的准即时操作.这个协议可能最终允许因特网用户向因特网上的其他任何人发送 ...
- XMPP协议实现原理介绍
本文介绍XMPP协议原理及相关信息. XMPP协议简介 XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM ...
- XMPP协议实现原理介绍(转)
XMPP协议简介 XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM(IM:instant messagi ...
- 即时聊天IM之三 XMPP协议客户端库的和Android端框架概述
合肥程序员群:49313181. 合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q Q:408365330 E-Mail:egojit@qq.com smack ...
- openfire及xmpp简单介绍
一.oprenfire 1.openfire是采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议.可以使用它轻易的构建高效率的即时通信服务器. 2.Openfire安装和 ...
- iOS开发拓展篇-XMPP简单介绍
iOS开发拓展篇-XMPP简单介绍 一.即时通讯简单介绍 1.简单说明 即时通讯技术(IM)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双 ...
- XMPP协议、IM、客户端互联详解
导读 对于推送,IM服务器,目前可以使用一些厂家提供的SDK来实现,但是我们的老板又总是担心使用别人的SDK,假如别人的服务出现问题,或者别人偷看咱们的信息,那岂不是出现很大问题了 聊一聊xmpp的服 ...
随机推荐
- ExtJS笔记2 Class System
For the first time in its history, Ext JS went through a huge refactoring from the ground up with th ...
- 【转载】在LoadRunner中执行命令行程序之:popen()取代system()
我想大家应该都知道在LoadRunner可以使用函数system()来调用系统指令,结果同在批处理里执行一样. 但是system()有个缺陷:无法获取命令的返回结果. 也许你可以用`echo comm ...
- 6.PHP内核探索:Zend引擎
相信很多人都听说过 Zend Engine 这个名词,也有很多人知道 Zend Engine 就是 PHP 语言的核心,但若要问一句:Zend Engine 到底存在于何处?或者说,Zend Engi ...
- Locking
Computer Science An Overview _J. Glenn Brookshear _11th Edition To solve such problems, a DBMS could ...
- 【转】get a mysterious problem,when i use HttpWebRequest in unity c# script
in script,i use HttpWebRequest to get service from network.but it comes a mysterious problem. the so ...
- 修改MyEclipse默认的Servlet和jsp代码模板
一.修改Servlet的默认模板代码 使用MyEclipse创建Servlet时,根据默认的Servlet模板生成的Servlet代码如下: 1 package gacl.servlet.study; ...
- 蓝牙—逻辑链路控制和适配协议(L2CAP)
L2CAP(Logical Link Control and Adaption Protocol),链路控制和适配协议,位于基带层之上,将基带层的数据分组交换以便于高层应用的数据分组格式,并提供复用和 ...
- BLE GATT规范中关于UUID与属性的详细解析
1. 角色 除了GAP定义了角色之外,BLE还定义了另外2种角色:GATT服务器和GATT客户端,它们完全独立于GAP的角色.提供数据的设备称为GATT服务器,访问GATT服务器而获得数据的设备称为G ...
- mysql-zabbix-agent
使用Zabbix监控MySQL服务器方法 01/27/2014 从Zabbix 2.2开始,Zabbix官方已经支持了MySQL监控,但是MySQL监控默认是不可用的,需要经过额外的设置才可以使用.K ...
- centos linux
centos 自带apache(httpd)不用安装 1.查看linux 版本号 方法1: cat /etc/redhat-release /etc/redhat-release配置文件用一行内容来声 ...