发送/接收信息
发送信息时,使用一个元素[JPO 1.3],它使用”to”属性来标识接收者;反之,你接受包含”from”属性的元素,它标识了发送者。
实际上,任何人都可以发送信息给别人,你不需要特定的权限就可以查看到别人的在线状态。这会造成信息的骚扰与泛滥吗?要解决这个情况,就要使程序有对信息进行筛选的能力,只允许从好友处来的信息,其他一律过滤掉。
Message attributes
我们收到的任何信息都包括一个聊 天
Jabber的群组聊天或会议机制允许多人同时进行交流。
这种多人交流的方式在客户端实现时是比较复杂的,这是大家所公认的,因为有两套聊天协议在使用。群组聊天是最早采用的,而会议机制是新的,也更灵活(注意,现在只有jabber 1.4服务器版本才支持它——做为一个外接模块)。实际上,协议本身仍在不段变化,还没有最终形成标准。
Creating a chat room
在产生一个聊天室前,你需要有一个聊天室名和一个会议服务。服务可以由用户来制定,或者通过发送jabber:iq:browse请求来检索。聊天室名称可以自己输入,或者编程产生(比如,产生一个随机的数字作为名称)。
为确认聊天室名称是否已被使用,可以发送(含xmlns=”jabber:iq:browse”的命名空间)到聊天室,如果它不存在,你会收到error 404(没有找到)错误,反之,如果其已存在,你就得重新为聊天室取个名称。QQ中体现在自建聊天室这个版块。
对于如何生成一个聊天室,有着不同的异议。编程者的实践经验是先发送presence到聊天室,如果已存在就加入它,没有则发送set请求来建立它(发送包含xmlns=”jabber:iq:browse”的命令)
Joining a chat room
需要加入一个聊天室时(它的ID已经由用户指定或在接到聊天邀请时确定),首先发送一个元素。注意不要添加resource名在发送中,这是老的groupchat的做法,现在的conference已经不采用了。如果你需要向下兼容性,可以发送resource name。
接下来,发送包含xmlns=”jabber:iq:browse”的,这个请求包含了一个或多个元素,它指明了你希望加入的会议的别名。一旦你接到一个成功回应,也就意味着你已经加入这个聊天室。
The chat’s roster
每个聊天室都有个人员列表,表明当前在聊天室中的人员。它会随着人员加入或离开而改变。
通知客户端聊天室人员的方法有很多种。首先,发给每个成员元素,在你加入这个聊天室或有其他成员改变在线状态时(更新状态、信息或是离开)。
此外,当成员列表改变时,自己会收到一个含有jabber:iq:conference命名空间的元素,它具体包括代理服务器上的jabber ID以及当前成员的昵称。描述conference本身的是包含多个属性的元素,如果包含子元素,则标识了当前的成员们,这时通常带有”jid” 属性和”name”属性。
又如,当一个成员加入、离开或是改变其昵称时,你就会收到一个类似的请求,它包含一个单独的元素。
最后,服务器会发送一个类似“某某加入了”或“某某离开了”样式的消息。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10294527/viewspace-126322/
,如需转载,请注明出处,否则将追究法律责任。