版权所有,转载请注明出处:http://guangboo.org/2013/03/22/xmpp-message-stanza
XML节是XMPP通讯的基本单元,类似于其他网络协议的数据包或消息,XML节包含以下概念:
-
节点名,包括message, presence和iq,每种节都要各种的作用,客户端也会区别处理;
-
属性,XML节都有各自的属性,并且这些属性都有重要的意义;
-
子节点,可以定义节的承载的数据等,这些承载可能会展示给用户,也可能是承载命名空间下定义的其他行为。
下面针对XMPP中包含的三种节点,message, presence, iq,进行介绍。
Message节
XMPP的<message/>节点是通讯过程中基本的“推”方式,它是一种“发出不管”的机制,来快速进行消息的获取。消息通常用在IM,群聊,提醒和通知,及其他应用。
Message节点有一个type属性,该属性有以下5个可能值,分别起到不同的作用:
-
normal
normal类型的消息就像邮件消息一样,因为这样的消息都是独立的,可能有反馈,也可能没有; -
chat
chat类型的消息用于双方实时回话的数据交换,如朋友之间的即时消息聊天; -
groupchat
groupchat类型的消息用于多用户聊天,即群聊,类似于IRC。 -
headline
headline类型的消息用于发送提醒和通知,对是否有反馈没有要求。 -
error
当双方前面发送的消息处理过程中有错误发生,该类型的节点就用反馈错误信息。
除type属性外,message节还包含了from,to属性,其中都是JID,分别表示消息的源和目的地址。message还可以承载一些子节点,XMPP核心规范中定义以下基本的承载,如<body/>和<subject/>,都是用于聊天消息,如下:
<message from="madhatter@wonderland.lit/foo" to="alice@wonderland.lit" type="chat"> <body>Who are you?</body> <subject>Query</subject> </message>当然message节点,包括之后介绍的其他节点,都可以承载XMPP核心协议中没有定义的子节点,用于节点的扩展。