Jabber即时通讯客户端(四)(转)

此博客转载自ITPUB博客,给出了链接http://blog.itpub.net/10294527/viewspace-126321/,并声明转载需注明出处,否则追究法律责任。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

随便说一下,如果你希望在聊天室查找某人,可以使用包含jabber:iq:borowse命名空间的元素来发送他/她的proxy JID。

  Chat invitations

  聊天邀请使用包含的请求来实现。

  Sending and receiving messages

  要发送一个信息到聊天室,可以发送”type”为”groupchat”的元素到聊天室地址。发送一个私人信息,可以到他们的proxy ID。

  收到的聊天信息依靠”groupchat”类型来辨识,可以从”from”地址去处掉resource ID,此时剩下来的就是聊天室ID了。

  Jabber还支持IRC的“表情”聊天方式,这使聊天者能做出类似舞台动作的行为。(这个在QQ中是很常见,也很有趣的)客户端通过前缀”/me”来辨识这样的信息,通常在显示前应该插入使用对象的昵称。

  比如,可以发送这样的信息”/me 笑眯眯的望着大家”,则客户端就显示为:
  Huwell 笑眯眯的望着大家

  Leaving the conference

  要离开聊天室时,你只需要简单的发送一个元素即可。

  File Transfer

  Jabber不直接支持文件的传送,而是依靠“带外数据”(out-of-band)即OOB机制通过URL来超链接文件。这种解决方案使得发送者的客户端要么上传文件到一个特定的FTP/HTTP/WebDAV服务器,要么打开另一个端口,运行一个常规服务在上面。这两种方法下URL都会发送给接受者,他们便使用这个超链接来下载文件。注意,后一种机制在发送者隐藏在防火墙或NAT Server后时会失效,接收者不受影响。这种P2P的文件传送功能非常有用。

  OOB不是仅为文件转送来设计的,它可用来传送任何URL,比如一个到心爱站点的链接,尽管一个HTML消息也可以支持它。

  有两种相似的方法来传送URL,一个就是将嵌套在元素中,并使用jabber:x:oob命名空间[JPG p.92,JPO 1.6.23];第二种方法就是使用jabber:x:oob命名空间的元素请求[JPG p.53,JPO 1.6.9]后一种方法允许通过iq回应来确认。


  [*}注册新用户

  Jabber协议允许客户端登记一个新的用户,而不用通过web界面来或系统管理员来申请(当然,任何服务器都允许这样做)。登记新的帐户有多种方法。

  登记时,首先连接到服务器并打开一个元素,这就好象是正常登录。只是发送的是使用jabber:iq:register命名空间的元素。[JPG p57-62]
如果服务器不允许登记新用户的话,会回应一个错误。

  下列资料可以做为编程者设计登记新用户界面的参考:
  ,这是一个需要随着登记命令发送回服务器的认证字符串。
  ,包含一个呈现给用户的介绍。
  
  ,这些都是用户的资料。属于jabber Server1.4所需要的,如果开发出自己服务器版本,就可以自己定义这些用户资料选项了。

  当用户一切就绪后,就可以发送包含上述资料的回应了,然后等待服务器的响应。
  
  如果注册新用户成功,你会收到一个包含空的请求的回应。你需要关闭连接,这个连接不能再做为登录的连接重复使用了,你得另外打开一条新的。

  如果注册失败了,你将得到错误的回应,如果错误代码是409(冲突),这意味着你注册的用户名是无效的。

  Updating registration

  如果要更新注册信息(如密码或电子邮件)可以通过发送元素来完成。

  Canceling an account

  如果你需要终止一个帐号,你先得通过发送一个元素来获得服务器的,然后再发送包含子元素的来达成。


  [*}WellJabber功能模块

  开发一个jabber的客户端不是一件简单的事,事实上标准的客户端应该包括:P2P聊天,聊天室,好友列表管理,资源管理,相关资料修改,信息加密处理,MSN网关(或者还包括Yahoo!,AOL等的信息转换),在线搜索,认证控制,离线信息转发,文件互传等。

  一个比较成功的jabber客户端是由jabber.com提供的JIM,此外还有很多优秀的jabber客户端,由于jabber的通讯协议是建立在XML基础上,而且是开放式的,所以任何语言都可以用来编写客户端,最常见的是Delphi,Java,C/C++,Perl,此外还有PHP,Python,JavaScript,甚至是Flash ActionScript都可以拿来编写这样的客户端,我觉得一个开放式的应用模式才是成功的,才会有长足的进步,这就象电子邮件,我们很难想象如果电子邮件的格式被一家所垄断,只能使用一家所编写的邮件程序去接收,那它还会这么普及、全球通用吗?在这方面国内的腾讯公司做的就很不好,显然易见,QQ的代码也是从jabber中剥离出来的,但是QQ却不肯公开它的通讯协议,一心只想做国内即时通信的老大,这会造成两个后果:一个是处在竞争压力小的情况下,它会停止不前,没有进步。

  我们看到,现在的QQ客户端同以前的没有什么太大的区别,不过界面更花哨些而已,没有利益的驱动,腾讯现在连Linux,Palm等平台都没有推出,实际上很可悲。另一个是它只能在国内发展,走不出国门,一旦即时通讯的国际标准制定,那它再这么固步自封,就会成为不合格的产品,下场也好不到哪去。所以希望腾讯公司能赶快觉醒,不要垄断这个现在看起来很壮大的行业。QQ虽然很火,但比起Flash,Netscape又如何?这些世界闻名的软件都是公开格式,甚至是代码的,腾讯还不该向这些软件学习吗?当年的Netsacape几乎是独步天下,可还是被IE后来居上了,现在微软又在XP中捆绑了MSN,腾讯再不当心,可真要尴尬了。

  WellJabber是使用PHP写的,是典型的B/S结构程序,之所以这样考虑,是想使WellJabber具有跨平台的特性,能够在win32,Linux,Unix,Mac等系统上都顺畅的运行,因为它是利用浏览器做为承载平台的。而且PHP发展到今天(最新的版本是Version 4)已经很强大了,它具有多种函数库,如同C语言一样,甚至融合的比C更体贴,就Jabber来看,PHP拥有必不可少的XML解析函数,还有网络连接函数,以及加密函数(Hash散列,Base_64等),总之使用PHP来写jabber的演示程序的确很方便,但PHP也不是十全十美的,毕竟,通过HTTP端口,很多有用的功能都实现不了,而且调用的不是系统级的函数(如connect),效率有所下降。

  本程序只预计包含五个功能模块:用户注册,用户登录,获取好友列表,发送信息,用户注销。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-126321/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-126321/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值