Jabber即时通讯客户端(五) |
| 作者:huwell 来源:huwell 发布时间:2006-7-28 14:51:49 |
|
器,第二个用于保存XML元素名称,缺省情况下,它们会以大写形式出现。第三个是数组,用以保存当前元素的属性及对应值。有了它,可以利用PHP特有的each逐个读出来。 我们在StartElementHandler中将本次要用到的元素属性赋值,以便下面的调用判断,如登录中就是要对$jabber_type值是否为result进行判断,如果是表明登录成功,如果不是那就是登录失败了。 接下来是GetRoster()行为,使用它可以获得当前用户的好友列表,我们发送: <iq type="get"><query xmlns="jabber:iq:roster"/></iq> 给服务器,即索要当前会话用户的好友列表,然后服务器会返回一系列数据流,里面包括了好友的名称,JID(jabber唯一标识,就好象是QQ中的数字号码)以及认证状态,如果还没有通过好友的认证,那subscription属性就会为none,WellJabber中采用了$jabber->roster成员变量来接收这一系列的值。需要注意的是每次成员函数调用时都使用同一个连接,i.e.$jabber->connect,所以单个行为不要调用fclose来关闭它,可以在类的析构函数中调用。 SenMessage()发送消息给好友,这里比较简单,当获取好友的JID时,发送相应的数据流即可,这里要注意的是,发送人不需要自己填写,在经过服务器处理后,会由服务器来添加“from”属性,这个是为了防止发送垃圾信息,前面已经说过了。 最后是登记新的用户帐号,这里分四步: 首先,要向服务器发送一个连接请求,就如同登录时所发送的一样; 接着,客户端会收到回应的数据流,这里包含了重要的id,是标识本次会话的唯一值;这时,我们要发送本次想注册的用户名,resource名及密码,注意这里的<iq>请求要包含上面得到的id,而且密码应该采用加密的形式,但WellJabber只是一个演示程序,所以采用了明文发送的形式; 最后,服务器返回<iq di=’sesseion id’type=’result’> 代表本次登记注册成功。这样就完成了一个新用户的注册。 然后就可以使用该帐号进行登录了。注意,这里要重新与服务器打开一个连接,原先的连接已经不能用来登录了。 PHP版的WellJabber所拥有的功能已经描述完了。当然,从它来看Jabber工程只能是管中窥豹,Jabber中许多有用的思想和特点它都没有体现,譬如说实时接收、文件交换、邮件转发、聊天室系统甚至是跨平台交流(如mobile)。但由于Jabber开放和易用的特性,我们看到,任何人都可以用自己喜欢的语言去处理jabber、去理解jabber,这么博大包容的特性也许就是它最吸引人的地方,Jabber的前途将无可限量。 |
| [] [返回上一页] [打 印] |
|
文章评论 |
