初窥XMPP

来源:互联网 发布:青岛知行国际 虚假 编辑:程序博客网 时间:2024/06/05 02:52

1. 什么是XMPP

XMPP(eXtensible Messaging and Presence Protocol)是一种用来在两个地点之间传递小型结构化数据的协议。XMPP最常用的使用场景就是即时通信,而这也是XMPP特点的最好体现。在XMPP上交换的数据是XML格式的,这使通信具备良好的可扩展性。

2. XMPP寻址

XMPP网络上每个实体都具有一个或多个地址(JID,jabber indentifier)。JID由三个部分组成:节点,域和资源。例如:danis@fabric.local/iphone。

  • 节点: “danis”便是一个节点,用来识别域中的一个特定用户,多人聊天服务将每个聊天室显示为一个JID,而节点部分指向聊天室。
  • 域:fabric.local 是域,域是实体可解析的DNS名称,也就是说,可以通过域来寻址处于网络中的实体,所以域是必须的。
  • 资源:/iphone则是资源,通常用于标识一个特定的客户端,/iphone则表示用iphone登录

3. XMPP节点

在XMPP中,各项工作都是通过发送和接收数据流来完成的,而XMPP核心由三种基本的节点组成<presence>,<message>,<iq>。三种节点有各自的用途,适当的组合可以完成复杂的任务.

1
2
3
4
5
6
7
8
9
10
<stream:stream>
<iq type='get'>
<query xmlns='jabber:iq:roster'/>
</iq>
<presence/>
<message to='sherry@coco.lit'from='danis@coco.lit'type='chat'>
<body>Go to have a breakfirst</body>
</message>
<presence type='unavailable'/>
</stream>
  • <stream:stream>:创建了一个XMPP流
  • iq:进行查询
  • message:则是一条信息
  • presence:出席,告诉服务器他在线并可以访问,<presence:unavailable>告诉服务器他不可访问
  • </stream>:关闭<stream:stream>元素,结束会话

(1). presence

<presence>控制并报告实体的可访问。

1
2
3
4
5
6
7
<presence>
 
<show>away</show>
 
<status>playing basketball</status>
 
</presence>

<show>用来传达用户的可访问性

<status>为可读的自然语言

(2). message

<message>用来实体和实体发送消息,这些消息可以是任何类型的结构化信息

(3). iq

<iq>: Info/Query,XMPP提供的请求/响应机制,和HTTP协议的工作原理类似。可以主动向实体进行查询。<iq> 有四种type:’get’,’set’,’result’,’error’

0 0