基于Jabber协议的移动即时通讯系统研究与实现_第1页
基于Jabber协议的移动即时通讯系统研究与实现_第2页
基于Jabber协议的移动即时通讯系统研究与实现_第3页
基于Jabber协议的移动即时通讯系统研究与实现_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于基于 JabberJabber 协议的移动即时通讯系统研究与实现协议的移动即时通讯系统研究与实现摘摘要要本文利用支持 Jabber 协议的开源服务器 WildFire,在基于 J2ME 平台的手机上实现了一个移动即时通讯系统,该系统不但具有传统即时通讯的文本信息传递功能,还具备拍照、传递照片、群组聊天以及查看资讯等功能。关键字关键字J2ME;即时通讯;Jabber;WildFire;XML;XMPP1课题研究背景移动 IM(Instant Message),也就是移动即时信息(即时通信、即时通讯)工具,是移动终端与即时通讯工具的结合。从最初的移动 QQ、手机 MSN,到陆续出现的“飞信”、

2、“超信”、“灵信”,当然还有不容忽视的 PICA,各类型的移动即时通讯工具让用户通过手机就可以与朋友或工作伙伴进行实时交谈、互传信息、娱乐消遣,它们正改变着我们的沟通模式甚至生活习惯。但长期以来各 IM 软件厂商推出的 IM 软件相互独立,缺乏基于统一标准的互用性,使得各种 IM 系统之间无法互相发送信息,例如 AOL与 Yahoo,MSN 与 AOL,MSN 与 QQ 等,它们之间就不能相互通信。因此,制订一种统一的协议就迫在眉睫,这种统一协议应当可用于 E-mail、Web和语音流的简单邮件传输协议(SMTP)、HTTP 和实时协议(RTP)等 IM 应用。由Jabber 组织发展的 Ja

3、bber 协议,其中包含支持符合 IETF 规范的即时消息和Presence 技术的基本协议形成了 XMPP 协议,XMPP(Extensible Messaging andPresence Protocol,即可扩展消息处理现场协议)为用于现场的消息路由处理的 XML 数据流协议,被确立为 IETF 标准。本文的研究工作正是基于这一背景。 2总体方案设计 2.1总体思路移动 IM 采用的是客户/服务器架构的体系结构,具有服务器端和客户端,其中服务器可以分为两个部分:Jabber 服务器和数据库系统。服务器采用基于 Jabber 的开源服务器WildFire 3.0.1,用户数据和系统信息的存

4、储由 MySQL 数据库实现,客户端J2ME 进行开发。 2.2Jabber 与 WildFire 服务器Jabber 就像 ICQ,MSN 一样,是一个基于 Internet 的即时通讯系统,但是同这些即时通讯软件不同的是,它是一个开放的即时通讯系统,也是一个基于 XML Stream 的协议,用于在 Internet 上的两个实体之间交换信息,现场状态(presence)和其它的结构化信息。你可以自己架设自己的 Jabber 服务器,使用不同的 Jabber Client软件,而不像 ICQ 或 MSN,依赖于 AIM 或 MSN 的服务器和软件。IETF 已经将Jabber 定为即时通讯

5、和现场技术的标准协议,称为 XMPP(ExtensibleMessaging and Presence Protocol),相关的规范是 RFC3920 和RFC3921。Wildfire 是一款获得许多荣誉的 Jabber 即时消息服务器,采用 Java 开发,可以使用任何支持 Jabber 的客户端如 psi、gaim 等连接。其主要特点有易于安装、管理、定制以及和其它应用程序集成,有基于 GPL 的开放源代码版本和商业版本。 2.3J2ME 介绍J2ME 是 SUN 公司在小型设备上的开发平台,它的主要技术优势在于:良好的跨平台能力与 J2EE 后端无缝的结合能力和 Java 语言的优良

6、特色,如简单安全以及现有的 Java 平台上的开发工具。 3关键技术研究 3.1与 MSN、OICQ 系统通讯Jabber服务器中的 Transport 组件是沟通 Jabber 和非 Jabber 协议之间差异的组件。当使用 Jabber 服务器访问非 Jabber 系统时,Transport 组件隐藏了系统之间的差异,这样,用户在访问的时候根本感觉不到自己访问的是外部的系统。但是,当用户第一次访问非 Jabber 系统时,需要向 Jabber transport 注册,注册内容就是用户名和将要使用的外部系统之类的信息。一旦注册成功之后,就可以在外部系统上发送和接收消息。 3.2网络连接策略

7、本文的移动即时通讯系统支持 Http和 Socket 两种连接方式。其中,Socket 连接方式为默认连接方式,但是不同品牌和型号的手机以及中国移动各地区网络对 Socket 的支持有差异,所以当Socket 连接不被支持的时候系统会自动切换到 HTTP 连接方式。此外,在国际上,使用 Http 连接方式通常只有一种 GPRS 接入方式,但中国有CMWAP 和 CMNET 两种方式。其中 CMNET 拥有完全的 Internet 访问权,而中国移动对 CMWAP 做了一定的限制,主要表现在 CMWAP 接入时只能访问 GPRS 网络内的IP(72:80),而无法通过路由访问 I

8、nternet(少数地区的移动网络可能不存在这一限制)。我们用 CMWAP 访问 Internet 就是通过 WAP 网关协议或它提供的 HTTP 代理服务实现的。 3.3拍照及照片传送技术客户端通过 mobilemediaapi(mmapi)中的 videocontrol 来实现,通过调用videocontrol 的 getsnapshot()方法实现。然后,对数据进行 base64 编码转换为字符串嵌入 xml 流;服务器收到收据后解码并利用 J2ME 的 Image 类还原图像。 3.4消息传递中编码考虑在系统实际开发中,我们通常面临不同的移动终端,有些设备的编码就必须特殊处理。比如,本

9、文采用 NOKIA 的S60 平台机型,NOKIA S60 手机在接收 ISO8859-1 编码时不是与大多数手机那样直接以 UTF-8 编码方式接收,它只支持 ISO8859-1 方式接收。但是这种方式接收后,封装在 ISO8859-1 流中的 xml 的数据会又一次被进行 ISO8859-1 编码转换,等于是在对这条封装在 ISO8859-1 流中的 xml 语句又封装了一个 ISO8859-1 的外壳。所以客户端要想得到 UTF-8 的数据,必须进行两次编码转换,首先剥掉这层 ISO8859-1 的外壳,得到正常的 ISO8859-1 数据流,才能向其它机型那样进行正常的 ISO8859

10、-1 向 UTF-8 编码的转换。 4关键模块实现本文实现的移动即时通讯系统支持群组消息模式。在群组消息模块中,登录的注册用户可以通过手机来实现传统 PC 平台的聊天室功能。Jabber的群组聊天或会议机制允许多人同时进行交流,这是对传统即时通讯功能的扩展。具体的业务流程是首先由用户读取群组列表选择登录目标。然后,进行登录并将用户 ID 注册到这个组中。完成注册后,系统会将本组内的其它成员信息(比如成员列表)发送到当前用户的客户端上。这时系统的会话组件已经为这个群组内地成员做好了消息传递准备,也就是说某个用户的信息可以被服务器传递到群组中的每一个成员。具体的实现过程如下: 4.1读取群组列表名

11、单当用户进入聊天室模块时,客户端首先发送一个 xml 语句向服务器发出请求,服务器收到后返回一个 xml 语句,客户端解析后读出聊天室列表,并进行屏幕显示,供用户选择。 发送的 xml 语句: 接收的 xml 语句: 论文出处(作者):4.2用户的在群组中的登记需要加入一个指定的群组时(它的 ID 已经由用户指定或在接到聊天邀请时确定),首先发送一个元素。注意在发送中不要添加 resource 名,这是老的 groupchat 的做法,现在的conference 已经不采用了。如果你需要向下兼容性,可以发送 resourcename。接下来,发送包含 xmlns=”Jabber:iq:brow

12、se”的,这个请求包含了一个或多个元素,它指明了你希望加入的会议的别名。一旦你接到一个成功回应,也就意味着你已经加入这个聊天室。客户端接收成员信息语句: 163 当客户端开始接收信息时,就意味指着请求成功了,那么客户端需要建立一个 GroupChat 实例,并且不断将接收的信息添加到这个实例中。 4.3群组成员列表的读取每个群组都有成员列表,表明当前在群组中的人员。它会随着人员加入或离开而改变。本系统通过在 GroupChat 类中设置一个 MUCUser 的属性,它是一个 Vector 的变量,每一个元素都是一个 MUCUser 实例,存放着每一个聊天室成员的个人信息,如 jid、昵称、等级

13、、级别等。客户端每收到一条 presence 语句,解析后都会更新这个属性。 群组成员的 presence 语句: 2 4 4.4群组中即时消息的发送一般来说群组消息传递时有两种最基本的形式,一种是公共消息,就是对所有人发送的信息,这种信息当前群内的所有成员都可以收到;另一种是私有信息,这种信息其实是群中的点对点消息传递,也就是说虽然是在群中,但服务器只会将其发送给群组中指定的成员。在本系统的群组消息模块中,成功的实现了这两种方式。群组消息的格式与点对点消息传递的格式基本相同,它们都是通过 Message 对象进行封装的。它们的区别在于 type类型一个是groupchat,而另一个是chat

14、。服务器端收到消息后,会根据 type 的值来判断这条消息是否群组消息。下面各给出一条 xml 语句来说明:公共消息格式: 你好 私有消息格式: hello 在 Gm 即时通讯系统中,对于客户端来说,一个聊天室就是一个 GroupChat 类型的对象,那么加入一个聊天室,本质上就是创建一个 GroupChat 对象的实例。对 GroupChat 实例的访问我们可以群组消息传递的所有功能。GroupChat 类继承了 Chat 类,而 Chat 类又继承至Conversation 类,可以说它是一个由一个基本会话类不断扩展而来的,即一个功能更强大的会话类。它的最主要的功能就是对当前聊天室内的成员

15、以及他们的发言进行管理,比如添加新的信息(新的发言)、成员的变更等等。GroupChat还有一个非常重要的方法,就是 broadcast()方法。通过这个方法将用户的 jid信息,说话的对象,发言的内容等封装为一个标准的 Message xml 语句,然后交给通讯线程发送出去。图 1、图 2 是软件运行的部分功能截图。图 1群组消息传递截图图 2好友列表读取显示截图5结论本系统不但实现了传统即时通讯的文本信息传递功能,还具备了拍照、传递照片、群组聊天以及查看资讯等功能。另外,针对国内手机网络和用户的特点和现状,系统对网络连接进行了优化。它能够支持 Socket 和Http 两种网络连接方式,并

16、且当客户端发现当前网络和手机不支持 Socket 连接时,能够自动切换到 Http 连接方式。此外,本文主要工作在Nokia、Motorola、SE 等品牌主流机型都得到实现,整个系统目前运转正常,现注册用户已超过 50 万,取得了一定的社会和经济效益。 参考文献 1.Jabber, Inc. Advantages of Jabber as a Platform for DevelopingCollaborative Applications, May 2002 2. Jabber, Inc. The Presence Valueof Presence: Leveraging your Instant Messaging Investment. August,2003 3. Shigeoka I. Instant Messaging in Java. 2002 4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论