Jabber客户端
现在网络中最流行的程序,莫过于即时通讯软件了,从ICQ到QQ,全世界约有7000万人每天在使用它们。人们利用它来沟通、交流,它是继电子邮件之后另一个最成功的通讯工具。如此成功的软件模式引出了一系列出色产品的诞生:ICQ,Yahoo! Messenger, AOL Instant Messenger,MSN Instant Messenger及中国人用的最多的QQ,而其中有一个较之其他通讯程序更璀璨夺目的明珠,那就是Jabber工程。
Jabber是一个基于开放模式的软件工程,现在的主要目的运用于即时通讯(Instant Messaging System),Jabber并非第一个发明者,但它拥有几个非同一般的特点:
*基于XML
*分布式构架
*开放式协议与代码库
*方便的、可扩展的组件模式
这些特点使得jabber一出世,便深受瞩目,可以毫不避讳的说,几大流行通讯软件(如Yahoo!,AOL Messager,还有tencent的 QQ)都是从jabber的代码库中发展而来的。而它基于XML的通讯协议,使得跨平台很容易就能实现,现在的jabber已经可以使PC,Palm(掌上电脑类)以及SMS(短信息)、WAP互相沟通无碍了。总之,jabber的发展激动人心,它极有可能成为未来的即时通讯标准。
以下介绍的是Jabber的工作状态,依据版本为最新的1.4。
Jabber是一个基于开放模式的软件工程,现在的主要目的运用于即时通讯(Instant Messaging System),Jabber并非第一个发明者,但它拥有几个非同一般的特点:
*基于XML
*分布式构架
*开放式协议与代码库
*方便的、可扩展的组件模式
这些特点使得jabber一出世,便深受瞩目,可以毫不避讳的说,几大流行通讯软件(如Yahoo!,AOL Messager,还有tencent的 QQ)都是从jabber的代码库中发展而来的。而它基于XML的通讯协议,使得跨平台很容易就能实现,现在的jabber已经可以使PC,Palm(掌上电脑类)以及SMS(短信息)、WAP互相沟通无碍了。总之,jabber的发展激动人心,它极有可能成为未来的即时通讯标准。
以下介绍的是Jabber的工作状态,依据版本为最新的1.4。
实际上,任何人都可以发送信息给别人,你不需要特定的权限就可以查看到别人的在线状态。这会造成信息的骚扰与泛滥吗?要解决这个情况,就要使程序有对信息进行筛选的能力,只允许从好友处来的信息,其他一律过滤掉。 Message attributes 我们收到的任何信息都包括一个<form>属性,它给出了信息的发送者。同电子邮件相比,它的认证更为可靠,因为这个属性是由jabber服务器端来添加的,这就减少了发送者进行欺诈行为的可能性。 一个信息还应该包括一个<subject>元素,它标识了本次信息的主题,但显示与否取决于接收者所使用的客户端程序。 一个信息还可以包括一个时间戳,这是用一个<x>元素来实现的,它使用了jabber:x:delay命名空间。 而使用jabber:x:envelope命名空间还可以提供群发的功能,这就象传统的电子邮件一样。[JPO 1.6.20] The message body 一个信息总是用<body>元素来包含其具体内容的。[JPO 1.3.3.1] 当然也可以包含可选的元素<html>,它将提供HTML格式的信息。[JPO 1.3.3.3]但是需要注意的是,这个格式是基于XHTML的(w3.org制定的一种由HTML向XML过渡的格式)。 对于HTML的使用者来说,会发现XHTML与其有很大的不同,因为设计XHTML时就考虑了客户端类型的限制(譬如说手机),具体体现为缺少一些常用的HTML元素,如<b>,<i>及<font>,但它们在XHTML中都有等价替代元素,如< strong>代替了旧的<b>,但一般指定色彩或格式时,都使用CSS(Cascading Style Sheet)。 Jabber支持加密的信息传送,它使用包含jabber:x:encrypted命名空间的<x>元素来处理。[JPO 1.6.19]文档中对这段描述并不是很清楚,因此WellJabber并没有对加密提供支持。 Other types of content 与MIME不同,jabber信息并没有一个标准的格式来容纳图片或声音,这就意味着你无法在信息中包含一幅图片的数据,除非是使用超链接的形式来指示它。 你可以随信息一起发送文件,但是文件的数据不能包含在<message>中,而是采用超链接的方式指明可以下载的文件。 Message types and threads 发送的信息可以使用”type”属性来提示其显示方式,如果没有指明这个属性,信息将独立地显示在单独的窗口中。若”type=chat”则指明应使用 one-to-one(类似QQ的两人世界)聊天界面来显示。此外还有”type=groupchat”,详细参见[JPO 1.3.1.1—— 1.3.1.4]。 最后有可能出现”type=error”这样的属性值,它表明在发送一个信息时出错了(比较常见的是,发送信息给一个不存在的jabber地址)。这时的回应包含在一个<error>元素中。[JPO 1.3.1.3] 为帮助客户端显示信息在相应界面中,信息还可以包含一个<thread>元素,它包含一个指向信息流的唯一值,客户端发送的第一个信息就应该包括一个唯一的线程ID,而后继的信息都应该发送到此线程ID标识的同一个线程中。(JPO建议thread ID由发送者的jabber ID及当前时间以散列算法合成) Message event 信息的发送者可以使用jabber:x:events命名空间来接受这样的通告,即信息的接收者是否已经查阅过本信息,或者他/她是否在进行回复。这是个全新的功能,在演示程序WellJabber中没有体现。 Message expiration 信息的发送者可以使用jabber:x:expire命名空间来确定信息的发送时效。[JPO 1.6.22]如果信息是离线存储的,当时效过去时,即使对方用户登录,该信息也不会发给他/她。
|