学习Android推送笔记---XMPP基础知识
来源:互联网 发布:歌曲软件下载大全 编辑:程序博客网 时间:2024/06/05 19:01
常用的标签
<stream:stream>...<presence><show/></presence><message to = "foo"><body/></message><iq to = "bar"><querry/></iq>...</stream:stream>
这也是xmpp中最常用的几个标签,这样的一段xml内容在XMPP协议中被叫做XML Stanzas(翻译:一节一节),大概就是表示一段XMPP协议的内容的意思,
XMPP身份标识
XMPP规定,每个客户端是使用JID来作为身份标识的: [user"@"]domain["/"resource]
为什么要定义成这样的格式,XMPP协议定义的初衷,是为了标准化,两个系统中可能会有重名的用户,所以XMPP规定在用户名后面加上域名,这样就唯一了,resource
有可能会在PC端和手机端都登录,所以就加上resource用于区分
XML Stanzas通用属性
- from
表示这条数据是谁发送出去的,然后里面填入的值就是JID,不过服务器通常都不会信赖from里指定的是什么,不然就有可能客户端伪造另一个人发送消息,所以我们编程的时候可以加也可以不加,服务器都不会用到的,更多用于我们调试程序的时候 - to
表示发送给谁,填入的也是JID,服务器收到了一段Stanzas后会解析,然后转发,如果没有指定JID就不会转发了,就认为事发送给自己的 - type
用于指定一段Stanzas的类型,每种不同的Stanzas可选的值也是不同的 - id
Stanzas的唯一标识,客户端发送一段Stanzas给服务器,服务器也返回了一段Stanzas给客户端,那么我们怎么区分,这时候就要用ID来哦分别了,发送和响应的时候都会相对应的写个ID
stream结构
Client:
<Stream:stream to="example.com" xmlns="jabber:client" xmlns:stream="123" version="1.0">
Server
<stream:stream from="example.com" id="someid" xmlns="jabber:client" xmlns="123" version="1.0">
这一段表示客户端与服务器之间都支持这个协议
注意到只有开始标签没有结束标签,因为在标签没有结束之前,客户端和服务器之间的会话还是存在的,发送了结束标签之后就表示客户端以服务器之间已经断连了.
Server
</stream:stream>
Client
</stream:stream>
presence结构
presence是用于表示用户的在线状态的,基本结构是 <presence from="jackson@gmail.com" to="jimmy@msn.com" type="unavaiable"/>
表示jackson告诉jimmy”我下线了”
type可选属性:avaiable:我上线了.unavaiable,下线,subscribe订阅某用户的在线状态,subscribed,订阅某用户的在线状态, unsubscribe,取消订阅某用户的在线状态,unsubscribed取消订阅在线状态,error出错
<presence> <show>away</show> <status>Having a spot of tea</status></presence>
show可选参数
chat
away
xa
dnd
chat表示在线,away表示短时间不再,xa代表需要长时间离开,dnd表示不想被打扰(do not desturb)
message结构
<messagefrom="jackson@gmail.com"to="jimmy@msn.com"type="chat"> <body>hello!</body></message>
type 可选参数 normal
chat
groupchat
headline
error
normal:(默认的)这是一条独立消息
chat:一对一对话
groupchat:群聊对话
headline:用于在客户端上显示的头条
error:错误
- message比较多,推送基本用不到massage Stanzas
IQ结构
<iq from="" to="" id= "" type="get"> <querry xmlns=""/></iq>
iq和http有点类似,其中querry标签表示制定具体的查询动作,jabber:iq:roster表示获取联系人列表,from和to指定同一个JID
type可指定get,获取数据
type可选参数:get
set
result
error
还有登录,推送消息等都会用到IQ
- 学习Android推送笔记---XMPP基础知识
- 学习Android推送功能笔记--XMPP协议
- android--笔记--XMPP协议消息推送原理
- android推送,androidpn项目分析及完善学习笔记(三) XMPP协议
- android消息推送-XMPP
- android消息推送-XMPP
- Android推送框架+xmpp
- Android--XMPP协议学习笔记
- android消息推送-XMPP 等
- Android 消息推送 Xmpp协议
- Android学习笔记--基础知识
- XMPP 学习笔记二 OpenFire框架与与XMPP协议基础知识
- Android Service学习笔记--基础知识
- xmpp协议学习笔记
- XMPP协议学习笔记
- XMPP协议学习笔记
- XMPP协议学习笔记
- XMPP协议学习笔记
- CSS层叠样式表
- MySQL 触发器
- Makefile 中:= ?= += =的区别
- xcode 打包提交appstore 提示 版本号低于线上版本号 及 The application you have selected does not exist
- 用UGUI实现小地图MiniMap
- 学习Android推送笔记---XMPP基础知识
- hibernate 中 session的get 和load方法比较
- shell脚本
- 字符串的截取
- HDU 5528 Count a × b 纪念长春站的遗憾
- android webview加载html5乱码解决
- Spring配置文件 装配Bean
- 使用VISIO远程服务器上的ORACLE数据库,反向生成数据库实体关系图
- ubuntu14.10上编译Android5.0.2源码