xmpp介绍
XMPP: Extensible Messaging and Presence Protocol Detail: http://www.xmpp.org/可扩展消息处理现场协议, 是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。
XMPP是一个流化XML[XML]元素的协议,用于准实时的交换消息和出席信息。XMPP的核心功能定义在Extensible Messaging and Presence Protocol (XMPP): Core XMPP-CORE. 这些功能 -- 主要是 XML流, 使用 TLS和SASL,以及流的根元素之下的<message/>, <presence/>, 和 <iq/> 子元素 -- 为各种类型的准实时应用提供了一个构造基础, 它可以被放在核心的顶层,使用特定XML名字空间[XML-NAMES]发送特定的应用数据. 我很想描述XMPP核心功能的扩展和应用,时间关系及理解的不是很透彻,也不敢乱发言;XMPP核心功能提供了RFC 2779 [IMP-REQS]定义的基本的即时消息和出席信息功能。
XMPP中JID =(jabber id)
fullJid: name + “@” + serverName +”resourceName”
barJid: name + “@” + serverName
name:登录名
serverName:是服务器的域名 如gmail.com(GTALK) 公司213服务器域名称为mm
resourceName:资源名 如Gtalk , MSN , QQ,Spark这些名称就是资源名
注意:一个名称可以使用不同的资源名登录,所以在发送消息时接收方一定要使用fullJid
BEEM中用到的相关类
1.说明
采用开源工程beem的代码结构 www.project-beem.com
2. AIDL接口
com.zbkc.mobileoa.im.beem
service中AIDL接口:
service.aidl包 |
aidl对应的实现 |
描述 |
IBeemConncectionListener.aidl |
IXmppConnection中调用 |
添加连接监听的回调接口 |
IXmppConnection.aidl |
XmppConnectionAdapter |
用于xmpp连接处理接口 |
IXmppFacade.aidl |
XmppFacade |
用于xmpp连接管理提供外部调用接口 |
IChatManger.aidl |
BeemChatManager |
用于聊天管理 |
IChatManagerListener.aidl |
IChatManger中调用 |
为聊天加入回调接口 |
IChat.aidl |
ChatAdapter |
封装xmpp聊天处理方法 |
IMessageListener.aidl |
IChatManger中调用 IChat中调用 |
提供消息处理回调接口 |
|
|
|
|
问:为啥在提供这么多的AIDL接口?
1)一层一层封装使结构更加清晰
问:为啥封装Contact Message UserInfo等类
在Service中如果要传递对象必须是继承自Parcelable的对象
问:RemoteCallbackList的作用
在多个类中都用到了RemoteCallbackList 主要是用于回调在Activity中实现的一些监听器
问:Avater和PrivacyList作用是什么?
Avater是头像信息
PrivacyList是用来定义更多的用户状态信息(如定义离开消息:“我吃饭去了”等)
3.service中主要的类
XmppConnectionAdapter: