博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
名册和存在
阅读量:5093 次
发布时间:2019-06-13

本文共 1904 字,大约阅读时间需要 6 分钟。

名册和存在

通过该名册,您可以跟踪其他用户的可用性(“状态”)。名册还允许您将用户组织成“朋友”和“同事”等组。其他IM系统将名单称为好友列表,联系人列表等。

Roster使用获得的实例Roster.getInstanceFor(XMPPConnection)方法。

名册条目

名册中的每个用户都由RosterEntry表示,其中包括:

  • XMPP地址(例如jsmith@example.com)。
  • 您分配给用户的名称(例如“Joe”)。
  • 条目所属的名单中的组列表。如果名单条目不属于任何组,则称其为“未归属条目”。以下代码段打印名单中的所有条目:
Roster roster = Roster.getInstanceFor(connection);Collection
entries = roster.getEntries();for (RosterEntry entry : entries) { System.out.println(entry);}

还存在获取单个条目,未归档条目列表或获取一个或所有名单组的方法。

存在

名册

名册中的每个条目都有与之相关的存在。该Roster.getPresence(String user)方法将返回具有用户存在的Presence对象,或者null如果用户不在线或您没有订阅用户的存在。注意:通常情况下,在线订阅始终与名单上的用户相关联,但在所有情况下都不是这样。

用户可以在线或离线。当用户在线时,他们的存在可能包含扩展信息,例如他们当前正在做什么,他们是否希望被打扰等。有关更多详细信息,请参阅Presence类。

听取名册和在场变动

名册类的典型用法是显示组和条目的树视图以及每个条目的当前存在值。例如,请参见右侧Exodus XMPP客户端中显示名单的图像。

状态信息可能会经常更改,并且名单条目也可能会更改或删除。要监听更改名单和状态数据,应使用RosterListener。要获知有关名单的所有更改,应在登录XMPP服务器之前注册RosterListener。以下代码片段将RosterListener注册到Roster,该名单将名单中的任何状态更改打印到标准输出。普通客户端将使用类似的代码来更新名单UI以及更改的信息。

Roster roster = Roster.getInstanceFor(con);roster.addRosterListener(new RosterListener() {	// Ignored events public void entriesAdded(Collection
addresses) {} public void entriesDeleted(Collection
addresses) {} public void entriesUpdated(Collection
addresses) {} public void presenceChanged(Presence presence) { System.out.println("Presence changed: " + presence.getFrom() + " " + presence); }});

将名称添加到名册中

Rosters和presence使用基于权限的模型,用户必须在将其添加到其他人的名单之前提供权限。这可以确保只有经过批准的用户才能查看其在线信息,从而保护用户的隐私。因此,当您添加新的名册条目时,它将处于暂挂状态,直到其他用户接受您的请求。

如果其他用户请求在线订阅,以便他们可以将您添加到他们的名单中,则必须接受或拒绝该请求。Smack以三种方式之一处理在线订阅请求:

  • 自动接受所有在线订阅请求。
  • 自动拒绝所有在线订阅请求。
  • 手动处理在线订阅请求。可以使用该Roster.setSubscriptionMode(Roster.SubscriptionMode)方法设置模式。简单客户端通常使用其中一种自动订阅模式,而功能齐全的客户端应手动处理订阅请求,并让最终用户接受或拒绝每个请求。如果使用手动模式,则应注册PacketListener以侦听类型为的Presence数据包Presence.Type.subscribe

版权所有(C)Jive Software 2002-2008

转载于:https://www.cnblogs.com/endv/p/11420112.html

你可能感兴趣的文章
[物理学与PDEs]第2章第5节 一维流体力学方程组的 Lagrange 形式 5.1 引言
查看>>
asp.net 中http协议及相关知识(零碎知识记录)
查看>>
【大型网站技术实践】初级篇:海量图片的分布式存储设计与实现
查看>>
数据结构基础温故-5.图(上):图的基本概念
查看>>
.NET基础拾遗(6)ADO.NET与数据库开发基础
查看>>
A - Elections
查看>>
php 正则表达式
查看>>
js中多行字符串拼接
查看>>
Web开发者的六个代码调试平台
查看>>
Unity Shader 噪声消融特效 - 剑灵死亡特效
查看>>
DataFrame计算corr()函数计算相关系数时,出现返回值为空或NaN的情况+np.log1p()
查看>>
大白话系列之C#委托与事件讲解(一)
查看>>
推荐!国外程序员整理的 PHP 资源大全
查看>>
暑期--第二周
查看>>
jQuery各种选择器总结
查看>>
利用Python分析快三骰子游戏
查看>>
课后作业-阅读任务-阅读提问-1
查看>>
HTTP 错误 500.21 - Internal Server Error
查看>>
Linux 中安装软件报缺少共享库文件的错误
查看>>
VS2005无法打开网站
查看>>