android xmpp 语音,Android:Xmpp协议的简单分析

概要

在IETF中,把IM协议分为四种协议:

1.IMPP(Instant Messaging And Presence Protocol)

2.PRIM(Presence And Instant Messaging Protocol)不再使用

3.SIMPLE(Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions)

4.XMPP(Extensible Messaging and Presence Protocol)

Xmpp(Extensible Messaging and Presence Protocol)是基于可扩展标记语言(XML)的协议,用于即时消息(IM)

一个实体在Xmpp网络结构中被称为节点,它拥有唯一的标识符jabber identifier(JID),即实体地址,用来表示一个Jabber用户,也可以表示其他内容,例如一个聊天室。

一个有效的JID包括一系列元素:

(1)域名(domain identifier);

(2)节点(node indentifier);

(3)源(resource indentifier)。

格式:node@domain/resource或node‍‍@domain‍‍类似于电子邮件的地址格式。

XMPP消息格式

客户端和服务器端的交互要经由XML流,XMPP中定义了3个顶层元素:

消息(Message)元素,状态(Presence)元素,IQ(Info/Query)元素

1.消息(Message)元素

用于在两个Jabber用户之间发送消息,JSM(Jabber会话管理器)负责满足所有的消息,不管目标用户的状态如何,如果用户在线JSM立即提交,否则JSM就存储

To:标识消息的接收方

From:发送方的名字或者标识

Body:包含要提交给目标用户的信息

Type:消息类型

结构:

2.状态(Presence)元素

用来表明用户的状态,如:online、away、dnd(请勿打扰)等。当用户离线或改变自己的状态的时候,就会在stream的上下文中插入一个Presence元素,来表明自身的状态。

结构:

online

3.IQ(Info/Query)元素

IQ是一种请求/响应机制,从一个实体从发送请求,另外一个实体接受请求,并进行响应。如:Clinet在Stream的上下文中插入一个元素,向Server请求得到自己的好友列表,Server返回一个节点,里面是请求的结果。

IQ主要属性是Type,包括:Get获取当前域值,Set设置或替换Get查询的值,Result说明成功响应了先前的查询,Error查询和响应中出现的错误

IQ元素用户不同的目的,它们之间通过不同的命名空间来加以区分。在Jabber/XMPP消息协议里有许多的命名空间。

常用的命名空间(namespace):“jabber:iq:register”,“jabber:iq:auth”,“jabber:iq:roster”

结构:

XMPP工作机制

例如:一个用户user,通过服务器server与其他用户建立连接,

1.user开始通过发送一个包与服务器server建立连接,包括用户鉴权,登录等。

2.user取得他的联系人列表,通过向服务器server发送字段请求,按照协议

返回报文

3.user发送一个presence请求服务器server,server将这条信息广播到user的所有好友

4.如果user的好友在线,会将presence返回给user,告知自己的状态

5.user与好友通信聊天

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值