XMPP的总结.pptVIP

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
XMPP的总结

XMPP协议总结报告 2012-08-27 Leon XMPP概述 XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测。 这个协议最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。 XMPP体系架构 XMPP的基本网络结构 ,xmpp定义了3个角色 Client Server Gateway 通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,然后在之上传输XML。 XMPP地址模式 统一的JID(jabber identifier) JID=[ node”@” ] domain [ “/” resource ] eg: cyber@/res domain:服务器域名 node: 用户名 resource:属于用户的位置或设备 一个用户可以同时以多种资源与同一个XMPP服务器连接 XMPP xml消息格式定义 xmpp xml包括3个元素:简单示例: stream presence status/ /prensence message body/ /message iq query/ /iq /stream Libjingle概述 Libjingle是由Google公司设计的一个开发库,由c++的源码和文档组成。通过Libjingle你可以设计自己的应用程序,通过一个服务器,不同客户端能够连接、通信和交换数据。Libjingle包含网络和代理服务器的协商层,XML的分析层,一个STUN的服务器等。通过使用ICE(Internet Communication Engine)的机制,STUN服务器,以及交换UDP或者TCP的数据包,这些连接的客户端之间还能够进行NAT和防火墙的穿透。 Jingle和Libjingle的区别 Libjingle大概和jingle(XMPP标准扩展协议)在同一时间被建立。尽管,jingle和libjingle是非常相似的,但是它们是不一样的,而且不能共同使用。现在libjingle的源码版本依然使用原始的网络协议,跟以前的稍微有些不同,但依然无法兼容jingle的规范。 Lbjingle体系结构 Libjingle应用程序工作流程 一.登录服务器 1.初始化 SSL 。 2. 建信号线程。 3.从用户中获取登录信息,比如用户名,密码和服务器地址。 4.创建一个XMPP 任务管理对象,libjingle使用XmppPump,包装了XmppClient和处理登录进XMPP服务器,并且处理所有的XMPP任务(tasks),例如发送和接收状态(presence)通知和登录进服务器。 5. 登进服务器。 调用XmppPump::DoLogin来登录。Dologin将要求一个运行中的信号线程; 6. 调用信号线程的Run,以保证消息线程开始循环监听。 7. 监听成功或失败的消息。 STATE_OPEN 代表应用程序成功登录。 8. 你将可以请求 STUN和 relay port信息,将它传给 PortAllocator对象。 Libjingle应用程序工作流程 二,发送和查询状态 在登进XMPP服务器后,你的应用程序应该提交你的状态给服务器。并且请求好友状态信息。服务器将回复这些信息给你,例如当前每个已经登录好友的JID。你可以使用这些JID和状态信息来发送连接请求。服务器将持续发送状态通知直至你的连接结束。 下面信息描述了怎样发送和接收状态信息(presence): 1. 登录以取得状态信息通知。 实例化并启动 PresencePushTask ,连接上OnStatusUpdate 信号。 2. 用你的状态信息设置状态对象。这个Status对象描述普通的状态信息,比如:status, show, visible,和其它信息。 3. 发送你的状态到服务器。实例化并启动PresenceOutTask,用来发送你的状态到服务器。服务器在收到你的状态信息后将会返回所有的好友成员的状态通知。 Libjingle应用程序工作流程 三. 设置会话管理 一旦你登录进服务器,并且发送和接收了关于花名册成员的状态信息,你应该需要设置会话管理管道。这是会话管理集合,逻辑组件,用来监视进来的连接请求和响应出去的连接请求。所有的应用程序都需要实例化下面核心的libjingle对象: 1.实例化您的NetWorkManager, PortAllocator 子类,SessionManager对象。 2.创建一个新的线程对象来作为工作线程[可选]. 3.注册您的SessionC

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档