logo资料库

XMPP权威指南 -中文.pdf

第1页 / 共216页
第2页 / 共216页
第3页 / 共216页
第4页 / 共216页
第5页 / 共216页
第6页 / 共216页
第7页 / 共216页
第8页 / 共216页
资料共216页,剩余部分请下载后查看
OLE_LINK1
OLE_LINK2
OLE_LINK3
OLE_LINK4
OLE_LINK12
OLE_LINK13
OLE_LINK14
OLE_LINK15
OLE_LINK16
OLE_LINK17
OLE_LINK18
OLE_LINK19
OLE_LINK20
OLE_LINK21
OLE_LINK22
OLE_LINK23
OLE_LINK24
OLE_LINK25
OLE_LINK26
OLE_LINK27
OLE_LINK28
OLE_LINK31
OLE_LINK32
OLE_LINK35
OLE_LINK36
OLE_LINK33
OLE_LINK34
OLE_LINK37
OLE_LINK38
OLE_LINK39
OLE_LINK40
OLE_LINK45
OLE_LINK46
OLE_LINK7
OLE_LINK8
OLE_LINK41
OLE_LINK42
OLE_LINK43
OLE_LINK44
OLE_LINK47
OLE_LINK48
OLE_LINK49
OLE_LINK50
OLE_LINK51
OLE_LINK52
OLE_LINK53
OLE_LINK54
OLE_LINK55
OLE_LINK56
OLE_LINK57
OLE_LINK58
OLE_LINK59
OLE_LINK60
OLE_LINK61
OLE_LINK62
OLE_LINK63
OLE_LINK64
OLE_LINK65
OLE_LINK66
OLE_LINK67
OLE_LINK68
OLE_LINK69
OLE_LINK70
OLE_LINK73
OLE_LINK74
OLE_LINK75
OLE_LINK76
OLE_LINK77
OLE_LINK9
OLE_LINK10
OLE_LINK11
OLE_LINK5
OLE_LINK6
目录 1.1 1.2 1.3 1.4 1.5 2.1 2.2 2.3 2.4 1. 介绍........................................................................................................................................... 6 你可以用 XMPP 做什么 ......................................................................................... 6 1.1.1 服务 ................................................................................................................... 6 1.1.2 应用 ................................................................................................................... 7 历史概述 ................................................................................................................... 9 开源和开放标准 ....................................................................................................... 9 延伸性 ..................................................................................................................... 10 总结 ......................................................................................................................... 10 2. XMPP 基础 .............................................................................................................................. 11 架构 ......................................................................................................................... 11 地址 ......................................................................................................................... 13 2.2.1 域 ..................................................................................................................... 14 2.2.2 用户 ................................................................................................................. 14 2.2.3 资源 ................................................................................................................. 14 2.2.4 国际化 ............................................................................................................. 14 2.2.5 统一资源标识 ................................................................................................. 15 XML 流 ................................................................................................................... 15 通讯原语 ................................................................................................................. 16 2.4.1 消息 ................................................................................................................. 16 2.4.2 出席 ................................................................................................................. 17 2.4.3 信息/查询 ........................................................................................................ 17 2.4.4 扩展性 ............................................................................................................. 20 2.4.5 异步 ................................................................................................................. 20 2.4.6 错误处理 ......................................................................................................... 20 建立一个基本的 XMPP 应用程序、 .................................................................... 21 总结 ......................................................................................................................... 23 3. 出席......................................................................................................................................... 24 有人在家吗 ............................................................................................................. 24 3.1 授权需要:握手订阅 ............................................................................................. 24 3.2 出席是怎样传播的? ............................................................................................. 25 3.3 可用性状态 ............................................................................................................. 27 3.4 出席优先级 ............................................................................................................. 27 3.5 定向出席 ................................................................................................................. 28 3.6 下线 ......................................................................................................................... 28 3.7 丰富出席 ................................................................................................................. 29 3.8 出席和名单 ............................................................................................................. 29 3.9 3.10 使用出席 ................................................................................................................. 32 出席为基础的路由 ................................................................................. 32 访问控制 ................................................................................................. 33 出席传输 ................................................................................................. 33 3.11 综述 ......................................................................................................................... 33 3.10.1 3.10.2 3.10.3 2.5 2.6
4.7 4.8 5.1 5.2 5.3 5.4 6.1 6.2 6.3 6.4 6.5 4.1 4.2 4.3 4.4 4.5 4.6 4. 即时消息 ................................................................................................................................. 35 IM ............................................................................................................................ 35 聊天会话 ................................................................................................................. 36 你在吗?聊天状态通告 ......................................................................................... 37 格式化消息 ............................................................................................................. 40 vCard ....................................................................................................................... 41 阻止和过滤通讯 ..................................................................................................... 42 4.6.1 阻止:一个简单方法 ..................................................................................... 43 4.6.2 高级阻止和过滤 ............................................................................................. 44 更多的消息扩展 ..................................................................................................... 45 总结 ......................................................................................................................... 45 5. 发现世界 ................................................................................................................................. 46 物品和信息 ............................................................................................................. 46 使用服务器和服务进行服务发现 ......................................................................... 48 使用客户进行服务发现 ......................................................................................... 51 5.3.1 明确的服务发现 ............................................................................................. 51 5.3.2 实体能力:服务快速发现 ............................................................................. 53 综述 ......................................................................................................................... 54 6. 数据表单 ................................................................................................................................. 55 基本结构 ................................................................................................................. 55 使用数据表单 ......................................................................................................... 57 Defining your terms:Form types ........................................................................... 59 数据表单中包含多媒体 ......................................................................................... 59 总结 ......................................................................................................................... 60 7. 多方通讯互动 ......................................................................................................................... 61 开始聚会 ................................................................................................................. 61 群聊基础 ................................................................................................................. 62 人群控制 ................................................................................................................. 65 昵称的意义? ......................................................................................................... 68 配置相关任务! ..................................................................................................... 70 隐私,安全,和所有这些事情 ............................................................................. 73 MUC 作为数据传输 ................................................................................................ 74 综述 ......................................................................................................................... 75 8. 发布/订阅 ............................................................................................................................... 76 Why it matters ......................................................................................................... 76 入门 ......................................................................................................................... 77 订阅 ......................................................................................................................... 78 发布和接收通告 ..................................................................................................... 81 Payloads: To send or not to send? ........................................................................... 82 Items:To store or not to store? ............................................................................. 83 发现节点 ................................................................................................................. 84 节点管理 ................................................................................................................. 87 8.8.1 创建和删除节点 ............................................................................................. 87 8.8.2 配置节点 ......................................................................................................... 88 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8
③ 9. 10. 9.2 9.3 9.4 9.5 9.6 9.7 8.8.3 管理节点读取 ................................................................................................. 91 8.8.4 通过容器节点聚集条目 ................................................................................. 94 因为 Suke 移除了所有的关联,所以她发送一个空的元素。 ....................... 96 Personal Eventing:PubSub simplified ................................................................... 96 8.9 8.10 总结 ....................................................................................................................... 100 Jingle:Jabber 作为多媒体 .................................................................................................. 101 即时通讯与其他 ................................................................................................... 101 9.1 Jingle 版本 .................................................................................................................................... 101 Jingle 模型 ............................................................................................................. 101 拨打电话 ............................................................................................................... 105 网络地址群转换 ................................................................................................... 108 基于 ICE 的 Jingle ................................................................................................. 109 附加 Jingle 行动 .................................................................................................... 111 综述 ....................................................................................................................... 111 发送二进制数据 ........................................................................................................... 113 10.1 从小开始: Bits of Binary ....................................................................................... 113 10.2 向上移:通过 In-Band 传输中等大小文件 ........................................................ 114 10.3 考虑更大数据:通过 Out-of-Band 发送大文件 ................................................. 117 10.3.1 直接发送数据 ............................................................................................... 117 10.3.2 通过代理发送数据 ....................................................................................... 118 10.4 文件传输协商 ....................................................................................................... 120 10.4.1 使用 Stream Initiation 进行文件传输 .......................................................... 121 10.4.2 使用 Jingle 进行会话协商 ............................................................................ 123 10.5 总结 ....................................................................................................................... 126 远程命令 ....................................................................................................................... 127 11.1 控制客户端 ........................................................................................................... 127 11.1.1 一个简单命令 ............................................................................................... 128 11.1.2 命令和数据表单 ........................................................................................... 129 11.2 提供自定义命令 ................................................................................................... 133 11.3 先进的工作流程:SOAP,RPC,IO 数据 ........................................................... 137 11.4 综述 ....................................................................................................................... 137 连接方法和安全性 ....................................................................................................... 138 Negotiating an XMPP stream ................................................................................ 138 12.1 12.2 认证选项 ............................................................................................................... 142 12.3 连接加密 ............................................................................................................... 143 12.4 联邦服务器 ........................................................................................................... 144 12.5 服务器组件 ........................................................................................................... 147 BOSH:XMPP over HTTP ...................................................................................... 148 12.6 12.7 无服务器消息 ....................................................................................................... 157 XMPP 安全性 ........................................................................................................ 159 12.8 加密 ....................................................................................................... 160 12.8.1 12.8.2 认证和标识 ................................................................................................... 160 12.8.3 垃圾邮件和滥用 ........................................................................................... 161 12.9 总结 ....................................................................................................................... 161 11. 12.
13. 14. 15. 16. 13.4 设计决策 ....................................................................................................................... 162 XMPP 协议是正确的选择吗? ............................................................................ 162 13.1 XMPP 的社区如何工作 ........................................................................................ 163 13.2 13.3 写 XMPP 软件 ....................................................................................................... 164 13.3.1 混合,匹配和扩展现有的 XMPP 软件 ....................................................... 164 客户端扩展,BOT 方式,构件,或者服务器模块? ....................... 165 13.3.2 13.3.3 打造你自己的客户端或服务器 ................................................................... 166 XMPP 协议扩展 .................................................................................................... 167 13.4.1 如何设计自定义扩展 ................................................................................... 167 13.4.2 新扩展规范 ................................................................................................... 168 13.5 综述 ....................................................................................................................... 169 建立一个 XMPP 应用程序 ........................................................................................... 170 CheshiR 微博平台 ................................................................................................. 170 14.1 14.2 第一阶段:ChishiR XMPP 即时通讯机器人....................................................... 171 14.2.1 分析 ............................................................................................................... 171 14.2.2 设计 ............................................................................................................... 171 14.2.3 编码 ............................................................................................................... 173 14.3 第二阶段:配置 CheshiR XMPP 即时通讯机器人 ............................................. 175 14.3.1 分析 ............................................................................................................... 175 14.3.2 设计 ............................................................................................................... 175 编码 ....................................................................................................... 175 14.3.3 14.4 第三阶段:使用一个服务器组件来收缩 CheshiR XMPP 服务 ........................ 177 14.4.1 分析 ............................................................................................................... 177 14.4.2 设计 ............................................................................................................... 177 编码 ....................................................................................................... 177 14.4.3 14.5 第四阶段: 使用 CheshiR 服务器组件注册 ....................................................... 179 14.5.1 分析 ............................................................................................................... 179 14.5.2 设计 ............................................................................................................... 179 14.5.3 编码 ............................................................................................................... 180 14.6 第五阶段:通过花名册扩展服务器组件 ........................................................... 181 14.6.1 分析 ............................................................................................................... 181 设计 ....................................................................................................... 182 14.6.2 14.6.3 编码 ............................................................................................................... 182 14.7 下一阶段: ........................................................................................................... 184 14.8 是一个 CheshiR 服务器模块还是一个专用服务器? ....................................... 185 14.9 总结 ....................................................................................................................... 185 附录 A XMPP 的技术规格指南 .................................................................................... 187 XMPP 协议的 RFC ................................................................................................. 187 15.1 XMPP 扩展协议 .................................................................................................... 187 15.2 15.3 诙谐的 XEPs .......................................................................................................... 199 XMPP 套件 ............................................................................................................ 199 15.4 附录 B 流行的服务器、客户端和库 .......................................................................... 200 16.1 服务器 ................................................................................................................... 200 16.2 客户端 ................................................................................................................... 201
16.2.1 跨平台(Linux、Mac OS X、Windows) .................................................... 201 16.2.2 Linux .............................................................................................................. 202 16.2.3 Mac OS X ....................................................................................................... 202 16.2.4 Windows ....................................................................................................... 203 16.2.5 Web 浏览器 .................................................................................................. 203 16.3 代码库 ................................................................................................................... 204 ActionScript ................................................................................................... 204 16.3.1 C .................................................................................................................... 204 16.3.2 C++................................................................................................................. 204 16.3.3 C#................................................................................................................... 205 16.3.4 Flash .............................................................................................................. 205 16.3.5 Java ................................................................................................................ 205 16.3.6 JavaScript ....................................................................................................... 206 16.3.7 Perl ................................................................................................................ 206 16.3.8 16.3.9 PHP ................................................................................................................ 207 16.3.10 Python ........................................................................................................... 207 16.3.11 Ruby .............................................................................................................. 207 附录 C 深入实践的思考 .............................................................................................. 209 入门 ....................................................................................................................... 209 调试工具 ............................................................................................................... 209 网络设置 ............................................................................................................... 212 术语 ............................................................................................................................... 214 17.1 17.2 17.3 17. 18.
1. 介绍 1.1 你可以用 XMPP 做什么 可扩展通讯与表示协议(XMPP)是一项用于实时通讯的开放技术。它使用可扩展标记 语言(xml)作为交换信息的基本格式。本质上看,XMPP 提供了一种近乎实时的在实体之 间传递 xml 片段的方式。 XMPP 在应用程序中被广泛使用,同样,你也在你的程序中使用 XMPP。为了实现这种 可能性,从抽象视角具体到服务和程序的视角来看待 XMPP 是很有帮助的。XMPP 的服务在 IETF 的两个主要规格以及几十个扩展规格中被定义。XMPP 应用一般是组织和个人共同关心 的软件程序和部署情景,当然核心服务也允许你建立其他种类的应用程序。 RFC 修订 关于这篇文章,[RFC 3920]]和[RFC 3921]正在积极修订和勘误,阐明含糊不清的地方, 提高它们的可读性,修正额外的错误代码,等等。这些文件在 IETF 中被叫做[rfc3920bis]和 [rfc3921bis] ,它们提供 XMPP 最准确的定义。在你阅读这本书的时候,现有的 XMPP 定义 可能已经被新的取代。要最新版本的修订,访问 http://XMPP.org。 1.1.1 服务 在本书中,服务定义为可以被任何给定应用使用的功能。XMPP可以提供以下核心服务: 信道加密 这个服务,定义在[RFC 3920],并在在这本书的第 12 章进行解释。它在客户端和服务器, 或者是在两台服务器之间提供了加密连接。虽然信道加密不一定是令人兴奋的,但它是构造 安全程序的重要步骤。 认证 这个服务,同样定义在[RFC 3920],并在这本书的第 12 章进行解释。它是安全应用开发 的另一重要组成部分。认证系统能保证试图通过网络进行通信的实体首先被服务器验证,它 能起到一种网络访问的“守门人”的作用。 出席 这个服务,定义在[RFC 3921],在这本书的第 3 章进行解释。它允许你发现其他实体的 网络可用性。在最基础的水平上,出席服务回答了这样一个问题,“一个实体是在线而且可 以通信的、还是离线并不能通信的呢?”出席数据也可以包括更详细的信息(如一个人是否正 在会议中)。典型的情况是,出席信息的共享是基于两个实体之间一个显式的出席订阅,以 此来保护用户的隐私信息。 联络清单 这个服务,也被定义在[RFC 3921],并在这本书的第 3 章解释。它使你可以在 XMPP 服 务器上存储一个联系人名单或者花名册。这一服务最常见的用法是使用即时消息的好友名 单,但是任何在服务器有账户的实体都可以使用这个服务,来维持一个已知的信任的实体的
列表(例如,它可以被机器人使用)。 一对一消息 这个服务,定义在[RFC 3920],在这本书的第 4 章说明。它允许你发信息给另一个实体。 它常用于个人即时通信,但信息的形式可以是任意 XML,而且同一网络的任何两个实体可以 交换信息,包括程序,服务器,组件,开启 XMPP 的 web 服务,或是其他的 XMPP 实体。 多方通讯消息 这个服务,定义在[XEP-0045],在这本书第 7 章说明。它允许你加入一个虚拟聊天室来 在众多参与者之间交换信息,这类似于互联网多线交谈(IRC)。信息可以是普通的文本,或者 可以包含 XML 延伸来实现更先进的功能,如房间配置、室内投票,以及各种对话控制信息。 通知 这项服务定义在[XEP-0060],在本书的第 8 章说明。它允许你创建一个通知并把它传递 给众多的订阅者。它类似于多方通讯消息,但是它适合用于具有明确的频道或者主题订阅的 一对多传递(称为“节点”)。 服务发现 这个服务,定义在[XEP-0030],在这本书的第 5 章说明。它允许你发现被另一个实体支 持的特性,以及任何与它相连的附加实体(如聊天房间服务中的一个房间)。 能力广告 这个服务,定义在[XEP-0115],说明在这本书的第 5 章。它是出席服务的延伸服务,它 为服务发现数据提供一种简化符号,从而使你能够轻易地缓存被网络上其他实体支持的特 性。 结构化数据表单 这项服务,在[XEP- 0004]定义,在这本书的 6 章解释。它允许你和其他实体交换结构化 但是灵活的表单(类似于 HTML 表单)。它常用于你需要收集其他实体的 ad-hoc 的信息的场 合,如配置和其他任务。 工作流管理 这个服务,定义在[XEP-0050],说明在这本书第 11 章。它能让你与另一实体在一个结构 化工作流中互动。它支持典型的工作流程的行动,例如移动到业务流程的下一个阶段或执行 一个指令。它经常与数据表单一起使用。 对等网络媒体会话 这个服务,定义在[XEP-0166]说明在这本书的第 9 章。它允许你来协调和管理与另一实 体的媒体会话。这样的会话可用于语音聊天,视频聊天,文件传输,以及其他实时互动等目 的。 这些都是你(或者你的应用程序)作为一个参与者,在一个 XMPP 网络中能得到的核心服 务。XMPP 社区的开发者在各种 XMPP 扩展中定义了一些附加功能,但在这里,我们将着重 于对构建实时应用程序最有益的服务。 1.1.2 应用 假设你有一些核心服务,你能用它们构建什么应用呢?这里有一些可能性: 即时消息 绝大多数人都熟悉的经典的即时消息系统结合了三个核心服务:出席,联络清单,和一 对一的通讯。这些系统往往包括更多的服务和特征,如果你有这三方面的服务,你就可以建 立一个基础的即时消息应用程序。 群组聊天
多方通讯消息服务使您和 IRC 建立相近的群组聊天系统。通常,群组聊天系统是用于特 定的应用程序,例如金融行业的实时交易系统,消防人员和军事人员的情况室,及虚拟教室。 游戏 结合定制的扩展,一对一的消息和多方通讯消息,你可以建立简单的游戏系统。例如, Chesspark 服务(http://www.chesspark.com/)完全是利用 XMPP 服务建成的。另一些游戏开发 者使用 XMPP 来添加出席和联络列表特性到已有的多人游戏中。 系统控制 结合一对一的通信和数据表单服务,可以部署轻量级系统用于远程系统的控制和交互。 在这一领域的部署应用包括网络管理、遥感勘测和机器人的控制。 地理定位 XMPP 通知服务是不可知负载(payload-agnostic)的。 一个定义有效载荷的格式是地理 定位,让您建立很好的基于地理位置的应用,如汽车跟踪。 中间件和云计算 有很多公司和研究小组正积极地研发基于 XMPP 的计算服务系统、轻量级中间件和云计 算基础设施管理。使用 XMPP 的效果是令人惊叹的,因为这些应用传统地依靠重量级的通讯 技术。我们看到,XMPP 正在占领低端市场。已经使用 XMPP 架构的公司认为,它也可以在 非 IM 的用途中被很好的使用。这些系统通常使用工作流扩展来传输结构化数据,关于这部 分的内容将在 6 到 11 章提到。具体的应用包括生物信息学。 数据同步 受欢迎的社交网络应用越来越多地使用了 XMPP 通知服务来解决特定的问题:不断查询 更新信息。现有的基于 HTTP 的部署被认为效率是不高的,因为有些时候,feed 从上次查询 以来没有发生改变。相比之下,XMPP 的通知服务只有当 feed 已经改变时才发送一个更新, 节省了可能被浪费在查询上的带宽和服务器资源量。 网络语音通话 2005 年 4 月开始的谷歌语音通话应用使 XMPP 在语音通话方面的应用得到发展。自那 时以来,XMPP 的媒体会话扩展通过 XFS 逐渐形成,并应用于诺基亚手机和“让每个孩子拥 有一台笔记本电脑”的项目。同样的扩展也可以被用于广泛的媒体会议类型,包括视频,文 件传输,书写板,和协作编辑。 身份服务 给定稳定的标识符(JabberIDs)和强大的认证服务,就可能使用 XMPP 对身份进行授权建 设服务如 Openid 和 OAuth 等。 其他的应用实例,包括数据转移、基于网页的即时聊天、移动设备通讯、允许出席的目 录。 我们将在这本书中,说明最受欢迎和最有趣的 XMPP 的用途。 虽然我们强调了 XMPP 许多应用,但令人遗憾的是我们不能覆盖所有的应用。我们不仅 缺乏空间和时间,而且应用的名单每天都在增加。此外,XMPP 最前沿的应用还没有标准化, 它们的变动太大,不适合在本书中描述。在写这篇文章的时候正在进行的工作有很多,例如 协同文档编辑、白色书写板、日历集成、文件共享、个人媒体网络。关于这些话题,如果你 想了解更多,我们建议你参与 XMPP 社区(见第 13 章)。在那里,我们定义了使用 XMPP 的新 方法。 XMPP 技术的未来会是怎样的?虽然我们不能确定,但趋势是清晰的:更多组织和服务系 统供应者选择去部署 XMPP,更多的网络应用程序选择 XMPP 接口, XMPP 被用于解决更多 的商业问题,XMPP 社区正在继续发展。使用 XMPP 技术是令人兴奋的,我们邀请你来加入!
分享到:
收藏