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的服 ...
随机推荐
- Away3D引擎学习笔记,持续更新
(1). 准备工作,一些必须知道的东西 (创建时间:2014-06-05) A.必要的开发语言基础.至少要懂点ActionScript 3.0语法(ActionScript 3.0语法及API参考), ...
- BCP 命令
bcp 实用工具 我们可以通过如下BCP命令(注意不能有回车)将其导出为XML文件,并保存: BCP "SELECT TOP 30 [bom_no],[LEVEL] FROM [sqladm ...
- mysql之触发器trigger 详解
为了梦想,努力奋斗! 追求卓越,成功就会在不经意间追上你 mysql之触发器trigger 触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table) ...
- MySQL 5.6.3
SHOW VARIABLES LIKE '%version%'; https://dev.mysql.com/doc/refman/5.6/en/explain.html As of MySQL 5. ...
- Fingerprinting
https://wiki.mozilla.org/Fingerprinting Fingerprinting Contents 1 Overview 2 Data 2.1 Plugins 2.2 ...
- P1010 幂次方
这么难得题,居然普及-?做了好久 #include <bits/stdc++.h> using namespace std; int fact[21]; void solve(int n) ...
- mysql select 练习题
10. 查询Score表中的最高分的学生学号和课程号.(子查询或者排序) select sno,cno from score where degree in(select max(degree) f ...
- Difference Search Path
1.Framework Search Path where to search frameworks (.framework bundles) in addition to sys ...
- HashSet HashTable HashMap的区别
(1)HashSet是set的一个实现类,hashMap是Map的一个实现类,同时hashMap是hashTable的替代品(为什么后面会讲到). (2)HashSet以对象作为元素,而HashMap ...
- QWidget 键盘事件 焦点(QApplication源码)
在Qt中,键盘事件和QWidget的focus密不可分:一般来说,一个拥有焦点(focus)的QWidget或者grabKeyboard()的QWidget才可以接受键盘事件. 键盘事件派发给谁? 如 ...