`

XMPP基本概念-节点(二)

阅读更多

<presence>
presence节点用来控制和表示实体的在线状态,可以展示从离线到在线甚至于离开,不能打扰等复杂状态,另外,还能被用来建立和结束在线状态的订阅。
下面是一些节点例子:
<presence/>
设定用户状态为在线
<presence type="unavailable"/>
设定用户状态为离线
<presence>
<show>away</show>
<status>at the ball</status>
</presence>
用于显示用户状态的详细信息。上面的例子表明用户因为at the ball在离开状态。
<show>标签在presence节点中最多出现一次,可以有以下取值:away,chat,dnd,xa.
away:离线
char:交谈中
dnd:希望不被打扰
xa:离开一段时间
<status>标签用于显示额外信息
<presence>
<status>touring the countryside</status>
<priority>10</priority>
</presence>
在这个节中,出现了一个<priority>标签,表示现在连接的优先度。 每个连接可以设置从-128到127的优先读,默认是设置为0.用户可以在这个标签里修改相应的优先度。如果有相应的设置的话,用户送往纯JID的将会送到优先度最高的那个连接,如果设置值为负数的话,则表示送往纯JID的消息将永远不会送达该连接。

扩展<presence>节点
1.在线状态预定(presence subscription)
首先我们来看一个例子:
<presence
from="william_duan@jabber.org"
to="test_account@jabber.org"
type="subscribe"/>
<presence
from="test_account@jabber.org"
to="william_duan@jabber.org"
type="subscribed"/>
通过上述交互,william_duan就能看到test_account的在线状态,并能接收到test_account的在线状态通知了。

<message> 正如名字一样,message节点用于用户之间传递消息。这消息可以是单纯的聊天信息,也可以某种格式化的信息。 message节点信息是传递之后就被忘记的。当消息被送出之后,发送者是不管这个消息是 否已经送出或者什么时候被接收到。通过扩展协议,可以改变这样一种状况。
下面我们看一些例子:
<message
from="william_duan@jabber.org"
to="test_account@jabber.org"
type="chat">
<body>Come on</body>
<thread>23sdfewtr234weasdf</thread>
</message>
私人聊天信息
<message
from="test_account@jabber.org"
to="william_duan@jabber.org"
type="groupchat">
<body>welcome</body>
</message>
多人聊天信息
上面的两个例子都包含了一个<type>标签,这个标签表明了消息的类型,可以取下面的一些值. chat:私人聊天信息,在IM中是最常见的。
error:错误信息
normal:不怎么使用的类型
groupchat:多人聊天信息
headline:通常用在自动服务中,不需要回应。
<body>标签里面是具体的消息内容。

<iq> iq节点主要是用于Info/Query模式的消息请求,他和Http协议比较相似。可以发出get以及set请求,就如同http中的GET以及POST. iq节点需要有回应,有get,set两种请求以及result,error两种回应。
下面我们看看一些例子:
<iq
from="william_duan@jabber.org/study"
type="get"
id="roster1">
<query xmlns="jabber:iq:roster"/>
</iq>
william_duan请求自己的联系人列表。
<iq
to="william_duan@jabber.org/study"
type="error"
id="roster1">
<query xmlns="jabber:iq:roster"/>
<error type="cancel">
<feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
</error>
</iq>
请求发生错误。
<iq
to="william_duan@jabber.org/study"
type="error"
id="roster1">
<query xmlns="jabber:iq:roster"/>
<item jid="account_one@jabber.org" name="one"/>
<item jid="account_two@jabber.org" name="two"/>
</iq>
请求成功,返回william_duan的联系人列表。每一个<item>标签代表了一个联系人信息。

分享到:
评论

相关推荐

    XMPP协议--即时通讯工具实现原理

    #### 二、XMPP的工作原理 XMPP采用客户端/服务器模式,其中客户端负责与用户交互,而服务器则承担着消息路由和其他服务功能。具体来说,XMPP的工作流程如下: 1. **客户端连接**: 客户端首先通过TCP/IP协议建立与...

    xmpp协议分析

    #### 二、XMPP架构及组件 ##### 2.1 架构概述 XMPP并未与特定的网络架构绑定,但通常采用客户端-服务器模型。在这一模型中,客户端通过TCP连接与服务器进行通信,而服务器之间同样通过TCP连接相互通信。 **架构...

    XMPP正式RFC标准3920

    XMPP中的地址空间基于XML命名空间的概念,包括节点、域和资源三个部分。节点标识用户或服务,域标识服务器,资源标识客户端的具体实例。这些组成部分组合在一起形成了完整的XMPP地址,例如:`node@domain/resource`...

    xmpp协议介绍,XMPP体系架构

    XMPP的核心概念是构建在TCP/IP协议之上的XML流,使得数据在客户端和服务器之间双向传输。 在XMPP体系架构中,有三个主要角色:客户端(Client)、服务器(Server)和网关(Gateway)。客户端通过TCP/IP连接到服务器...

    xmpp rfc 3920

    文档最后列出了参考文献、节点准备方法、资源准备方法、XML模式等附加信息,这些都是理解和实现XMPP的重要参考资料。 通过以上解析,我们可以看到XMPP不仅是一个强大的即时通讯和在线状态协议,而且还具有高度的...

    XMPP关键概念

    它们类似于XML文档中的节点,例如`&lt;message&gt;`, `&lt;presence&gt;`, 和 `&lt;iq&gt;`,这三种是XMPP定义的顶级XML节,分别代表了不同的信息类型: 1. `&lt;message&gt;`节:用于传输消息内容,如聊天对话、警告、通知等。它具有`to`...

    RFC3920 - Jabber XMPP中文版

    2. **术语**:文中涉及的术语包括服务器、客户端、网关和网络等关键概念,这些构成了XMPP的基本架构。服务器负责处理多个客户端连接,网关用于不同协议之间的转换,而客户端则是用户界面,通过网络与服务器进行通信...

    XMPP协议整理

    #### 二、XMPP协议的关键概念 **1. XML流和XML节** XMPP的基础是XML流和XML节。XML流是指两个实体之间建立的双向通信通道,用于传输XML数据。XML节则是在XML流中传输的具体数据单元。XML流可以被视为会话期间所有...

    xmpp clustering

    在XMPP集群中,主要有两个关键概念:组件(Component)和集群节点(Cluster Node)。组件是独立于核心服务器的可插拔模块,可以处理特定的功能,例如多用户聊天室或外部服务的接口。集群节点则是一个服务器实例,它...

    XMPP即时通信 协议

    这个文档集可能是对XMPP协议的详细解释,包括其核心概念、工作原理以及如何在实际应用中部署和使用。 XMPP的核心特性包括: 1. **可扩展性**:XMPP基于XML,允许通过定义新的XML元素和命名空间来扩展协议,以适应...

    XMPP协议中文版

    ### XMPP协议中文版知识点详解 #### 一、概述 XMPP协议,全称为可扩展的消息和出席...对于初学者来说,深入理解XMPP协议的核心概念和技术细节是非常有帮助的,有助于更好地利用这一协议构建高效稳定的即时通信应用。

    XMPP研究.zip

    首先,让我们深入理解XMPP的核心概念。XMPP的核心是Jabber协议,它通过TCP/IP网络进行通信,使用XML流传输数据。XMPP服务器作为通信的中心节点,负责路由消息并维护用户的状态。客户端则通过连接到服务器来发送和...

    XMPP_3920_最靠谱的中文翻译文档

    RFC 3920是XMPP的核心规范,它详细阐述了XMPP协议的基本特性和架构。 **1. XMPP概述** XMPP起源于1999年Jabber开源社区的工作,最初是为了解决即时消息(IM)和出席应用的需求。随着时间的推移,XMPP被重新设计并...

    XMPP, Ruby, pluralsight

    **XMPP:实时通信协议** ...通过这个课程,学员不仅可以掌握XMPP和Ruby的基本概念,还能获得实践经验,从而有能力构建自己的实时通信解决方案。无论是在个人项目中还是在专业环境中,这种技能都是非常有价值的。

    xmpp 协议介绍(rfc3920)

    - **基本概念**:XMPP使用连续的XML元素流来表示通信内容。每个XML流都始于一个启动标记(`&lt;stream:stream&gt;`),并在通信结束时关闭(`&lt;/stream:stream&gt;`)。 - **特性**: - **持久性**:确保数据在传输过程中不会...

    inkboard2.tar.gz_xmpp

    2. **基本结构**:XMPP网络由服务器、客户端和各种服务节点组成。客户端与服务器之间建立持久连接,进行双向通信。服务器负责路由消息、管理用户状态,并可与其他服务器进行对等通信。 3. **XML流**:XML流是XMPP...

    聊天插件帮助文件

    #### XMPP协议与.NET平台结合的基础概念 XMPP(可扩展消息处理协议)是一种基于XML的协议,主要用于即时消息(IM)和在线状态(在线/离线通知)。XMPP因其开放性和灵活性而在即时通讯领域得到了广泛应用。本文档...

    开源项目-processone-gox.zip

    在深入探讨Gox库之前,我们先理解一下XMPP的基本概念。XMPP的核心设计理念是基于分散式架构,允许任何两个网络节点进行双向通信。它通过客户端-服务器模型工作,客户端连接到服务器,服务器之间可以互相传递信息。...

Global site tag (gtag.js) - Google Analytics