XMPP 协议笔记 二 XML数据包

No Comments

3. XMPP 核心数据包

XMPP 的核心数据包类型有Precense,Message,Iq ,此外加上初始化 stream 用到的 Stream 数据包。这些数据包是 XMPP 信息传输的载体,被用于 XMPP 核心功能和扩展功能的实现。

该部分仅对 XMPP 中使用的数据包进行概览,用于感受基于 XML 的数据包与其他非 XML 数据包协议的差别,不能替代 IETF 关于 XMPP 协议的 RFC 文档 [3920] [3921][3][4],以及 XMPP 的扩展协议文档 [extensions][5] 中描述。

3.1 公有属性

在 XML stream 中,每个数据包都是 XML 格式纯文本。而每个 XML 数据包有以下公有属性:

  • to 数据包要发送的目的地址
  • from 数据包发送的源地址
  • id 数据包标示符

此三项属性在 XML stanza 中最为常见。

to 和 from 属性用于服务器决定该数据包的路由规则。某些情况下,to 和 from 属性可以只有一个,例如:客户端向服务端发送设置配置的 Iq 包只含有 to (不向外路由),客户端向联系人发送 Message 只含有 to (from 属性总是被改写为客户端的地址)。

id 用于节点间判断请求和应答数据包的对应状况,大多数情况可以不处理。 More

XMPP 协议笔记 一 基础篇

No Comments

1. XMPP 优缺点

XMPP (Extensible Messaging and Presence Protocol) (前称Jabber) 是一种以 XML 为基础的开放式即时通讯协议,是经由互联网工程工作小组 (IETF) 通过的互联网标准。[1]

1.1 XMPP 协议的优点

1.1.1 可扩展性

XMPP 的数据传输基于 XML 格式,可扩展性强。XMPP 的核心协议栈 (Core Stack) 部分只定义了基础的 Presence,Message,Iq 等最主要数据格式和传输逻辑,更多的功能则通过定义扩展 (Extensions) 实现。

1.1.2 受 IETF 组织规范

Internet Engineering Task Force  (IETF) 在2002年开始规范 XMPP 协议,使其协议的修订和扩展的添加都经过严格的流程审核,防止 XMPP 协议因缺乏标准而分裂。并且这也保证了 XMPP 协议是完全开放的。

1.1.3 应用广泛

XMPP 协议的应用比其他开放即时通讯协议更为广泛。较有名的使用 XMPP 协议的聊天服务有 Google Gtalk 和 Facebook Chat 等。此外,XMPP 在各平台下都有若干服务端、客户端和程序库的实现,二次开发时成本较低。

XMPP 协议的可扩展性和开放性是该协议被广泛应用的保证。 More

如何向一个基于Qt的开源项目贡献翻译

No Comments

我毫无疑问是一个菜鸟,不过我是比较有上进心的菜鸟,一直希望有朝一日能成为说中的牛人。菜鸟不会自然而然的成为牛人,这需要一个锻炼的过程,在哪里可以找到锻炼呢?那就是参与开源项目的开发。三人行,必有我师,何况是开源项目。能开发一个软件,并且这个软件能让我看到,那这个人几乎可以肯定水平比我高。所谓近朱者赤,往牛人身边靠,能提升自己的能力。

但是现实中的开源项目的代码质量不是我这种没有经过锻炼的菜鸟可以涉足的,这里就出现一个矛盾:要想提高我的能力,我必须参加一个开源项目;要参加一个开源项目,我必须有相应的能力。那难道我这种菜鸟就没有参加开源项目的方法了?好在,能向开源项目贡献的并不只有代码,还有别的方面,比如bug报告、美工、翻译。经过我探索发现,其实参与一个开源项目门槛最低的是参与翻译。而且收获远远不止英语单词的积累,还可以学到以下内容:

  • 与开发者交流的礼义
  • 观摩一个开源软件开发的流程
  • 从易懂的角度阅读开源代码

我最近厚着脸皮,参加了 qtcreator 中文版的翻译,这让我学到了不少东西,远胜于自己闭门造车。

于是,我想记录一下我第一次参与开源项目翻译的心得,也为跟我一样想参与开源项目的人提供借鉴。

1. 使用 Qt Lingust

该部分仅适用于基于 Qt 开发的项目

Qt 是一个开源的应用程序开发框架(官网),基于 Qt 的开源软件有 KDE SC,SMplayer等。

Qt 为所有基于 Qt 开发的软件提供了一个翻译的解决方案,这包含了针对项目管理者,开发者和翻译人员的对应工具。这里只说翻译人员要用的工具 Qt Lingust。

Qt Lingust运行图

Qt Lingust 是一个图形界面的应用程序,翻译人员使用的时候并不需要拥有编程知识。(当然为了翻译得更准确,Qt 字符串里的 % 标记还是要会看的)。 More

Older Entries Newer Entries