XMPP 实践 二 程序架构

No Comments

6. QTalk 客户端的设计

在此,将我编写的 xmpp 客户端命名为 QTalk ( Qt + Gtalk)。

(blog 特有内容: 开源了,放在 http://github.com/chloerei/qtalk)

由于选择了 Gtalk 服务器作为服务端,qxmpp 库作为程序的 XMPP 的通信模块,所以 QTalk 编写的主要工作在于功能与用户界面的实现。

QTalk 的预期功能如下:

  • GTalk 帐号登录
  • 列出联系人名单,获取联系人 VCard 资料、状态信息
  • 向已有联系人收发纯文本消息
  • 向已有联系人收发文件
  • 增删联系人
  • 人性化设置

QTalk 的运行截图见附录 一。

6.1 QTalk 结构

QTalk 的结构可分为通信模块和用户界面两大块,层次结构如图四所示: More

XMPP 实践一 Qt 和 qxmpp 库

4 Comments

5. 选择用于编写 XMPP 客户端的工具

为了深入了解 XMPP 是否足够用于开发一个开放、功能丰富的即时聊天工具,我决定写一个 XMPP 的客户端聊天程序。服务端直接连接 Google Talk 服务器。客户端编程基于 C++/Qt 和 qxmpp 库。最终程序将可以使用 Gtalk 帐号登录,并与其他 Gtalk 用户通信。

用于编写 XMPP 客户端的工具如下:

  • Google Talk 服务器
  • Qt 编程框架和工具链
  • qxmpp 程序库

5.1 Google Talk (Gtalk) 服务器的优势

Google Talk 是 Google 公司于2005年8月24日推出的一款IP 电话及即时通讯的服务。Google Talk 使用开放的 XMPP 协议。得益于 XMPP 的开放性,使用 Google Talk 服务不一定要通过官方客户端。Google Talk用户端仅支持 Windows (2000、XP、Server 2003、7)。[13]

实际上从 Gtalk 发布开始,XMPP 才真正走入大众的视野。以 Google 公司为后盾,Gtalk 的服务器拥有安全和稳定的口碑。

此次编程实践不涉及服务端的编程,而是遵循 XMPP 协议,让自己编写的客户端与 Gtalk 服务器通信,通过 Gtalk 服务器转发客户端的数据包。不涉及服务端编程,也可以使我专注与客户端的功能和操作性的优化上。

5.2 Qt 编程框架简介

Qt (发音同cute) 是一个跨平台的C++应用程序开发框架,有时又被称为 C++ 部件工具箱。Qt 被用在 KDE 桌面环境、Opera、OPIE、VoxOx、谷歌 Earth、Skype 和 VirtualBox的 开发中。它是诺基亚 (Nokia) 的 Qt Development Frameworks 部门的产品。[14] More

XMPP 协议笔记 三 扩展

No Comments

4. XMPP 扩展

XMPP 的核心部分是一个轻量级的协议,不足以满足一般即时聊天应用的需求。 XMPP 的社区在核心协议的基础上定义了众多的扩展协议,用以实现电子名片、二进制传输等功能。

4.1 通过 vcard-temp 获取电子名片

电子名片 (个人资料) 是聊天程序中常见的功能。通过电子名片,用户可以查看联系人除了 JID 地址外的其他信息,如:昵称,全名,个人网站 URL 等。

XMPP 的扩展之一 [XEP-0054] vcard-temp [9] 实现了电子名片。要在聊天程序中支持电子名片,需要客户端和服务端都实现 vcard-temp 扩展。知名的 XMPP 服务器大都支持 vcard-temp 扩展,如 jabber.org, gtalk 等。

4.1.1 请求电子名片

vcard-temp 扩展规定的电子名片访问规则如下:

客户端:

<iq from='stpeter@jabber.org/roundabout'
    id='v3'
    to='jer@jabber.org'
    type='get'>
    <vCard xmlns='vcard-temp'/>
</iq>

该查询使用 get 类型的 Iq 包请求 jabber.org 服务器返回 jer 用户的 vcard 数据。 More

Older Entries