`
yjl49
  • 浏览: 113283 次
社区版块
存档分类
最新评论

Openfire 好友状态的发送(用户登录)

阅读更多

客户端在登录 Openfire 时都会收到自己订阅的好友状态,那么这个好友状态是怎么下发下去的呢?

用户在登录后会发送一个<presence> 来更新自己的状态,在PresenceRouter 中进行处理。

这个presence 交由PresenceUpdateHandler 处理,在判断用户为注册用户后使用RosterManager.getRoster() 来获取所有已经订阅的其他用户。

针对每个用户判断关系类型,如果为SUB_FROM,SUB_BOTH 则说明此用户为订阅了自己的。

先向订阅了自己的用户广播状态更新消息。调用initSesion(),从中取出SUB关糸为SUB_TO 和 SUB_BOTH的,调用PresenceManagerImpl 中的probPresence() 方法来处理每个被订阅者。probPresence()通过sessionManager获取每个用户的在线情况,组装presence并发送给登录用户。

 

 

分享到:
评论

相关推荐

    openfire好友关系解析

    1. 用户请求添加好友时,如用户 tom 添加 hu 为好友,会发送一个类型为 "subscribe" 的 `&lt;presence&gt;` 数据包,表明希望订阅对方的状态。 2. 用户 hu 在上线后接收到请求,同样会收到一个 `&lt;presence&gt;` 数据包,表示 ...

    openfire添加好友

    在Openfire中,用户可以通过添加好友来建立联系人列表,从而实现消息的发送和接收。下面将详细解释Openfire中添加好友的过程以及涉及到的相关概念。 1. **Presence包与类型**: - `unavailable`: 用户下线或者离线...

    openfire xmpp协议源码

    4. 在线状态:处理用户的在线、离线、隐身等状态,实现好友列表的展示。 5. 事件监听:设置监听器,处理接收消息、用户上线/下线等事件。 四、安全与优化 1. 数据安全:在Android客户端和Openfire服务器间使用SSL/...

    openfire+smack即时通讯

    - **Smack**:Smack提供了连接管理、消息发送接收、用户状态管理、多用户聊天等功能。它封装了XMPP协议的复杂性,使得开发者可以方便地构建XMPP应用。 - **Openfire**:作为服务器端,Openfire处理用户的登录、认证...

    基于openfire 仿QQ

    - 客户端需要实现登录注册、好友管理、群组功能、发送接收消息等功能,这些都涉及到Android的Activity、Fragment、Intent等组件的使用。 3. **Openfire集成**: - 开发者需要在Android客户端中集成Smack库,这是...

    Openfire 4.2.3+Smack 4.3.0最新安装包

    然后,开发者在客户端应用中集成Smack库,通过连接到Openfire服务器,实现用户的登录、注销、好友添加、消息收发等功能。在处理实时性要求高的场景时,还可以利用Smack的推送通知服务,保证即使在离线状态下也能及时...

    openfire消息、监听、启动流程分析

    Openfire支持监听用户的登录、登出、在线状态变化等事件。这通常通过实现特定的监听器接口来完成,比如`PresenceListener`可以监听用户在线状态的变化。当用户状态发生变化时,服务器会触发监听器的回调方法,让...

    基于openfire + jwchat 的 WEB IM

    2. **后端服务**:可能使用Java Servlets或Spring MVC框架,处理来自前端的请求,与Openfire服务器进行通信,如登录、发送/接收消息等。 3. **配置文件**:包括Openfire服务器的配置信息,可能还有数据库连接参数等...

    基于openfire,XMPPFramework实现的iOS聊天应用

    登录成功后,应用可以通过XMPPPresence发送在线状态,告知服务器和好友用户已上线。 **四、好友列表与好友管理** XMPPRoster类是用来管理好友列表的,它能获取当前用户的联系人列表,也能添加或删除好友。例如,...

    基于openfire的android即时通信

    即时通信(Instant Messaging, IM)是一种实时的在线通信技术,让用户可以迅速地发送文本消息、文件、图像等信息。在移动互联网时代,Android平台上的即时通信应用尤为常见,为用户提供方便快捷的沟通方式。本项目以...

    仿照微信的即时通讯ios客户端,后台为openfire

    1. **用户登录与注册**:客户端需要实现用户登录和注册功能。这涉及到向Openfire服务器发送XMPP认证请求,包括用户名、密码和资源标识。成功认证后,客户端将获取到一个SID(Session ID)和RID(Request ID),用于...

    websocket+smack+openfire的的源代码

    Smack 提供了丰富的 API,使得开发者可以方便地创建客户端应用,实现用户登录、好友管理、消息发送等功能。它还支持扩展,允许开发人员添加自定义的协议元素和功能。 Openfire 是一个基于 XMPP 的开源服务器软件,...

    基于openfire XMPP的即时通讯客服端

    - 好友管理:用户可以添加、删除好友,查看好友在线状态,建立个人社交网络。 - 分组管理:用户可以创建和管理不同的联系人分组,方便组织和查找联系人。 - 群聊功能:支持创建多人聊天室,方便讨论组、班级等...

    Android-XMPP-openfire-实现IM

    - **学习重点**:理解MyXmpp中的关键类和方法,如`XmppManager`(负责连接和消息处理)、`LoginActivity`(用户登录界面)等。 - **自定义扩展**:如果MyXmpp包含扩展功能,如自定义消息类型或群聊管理,可以深入...

    openfire 聊天实现

    通过Openfire搭建的服务器作为后台支持,用户可以进行实时的消息传递、好友管理以及在线状态的查看等功能。开发者表示后续会提供Openfire的搭建教程,这将帮助用户更好地理解和使用Openfire服务端。 【标签】...

    openfire语音聊天

    2. **JavaScript集成**:引入Strophe.js库,并编写JavaScript代码以连接Openfire服务器,实现登录、注销、好友列表获取、消息发送与接收等功能。 3. **语音模块**:集成WebRTC或其他语音通信技术,实现一对一或多人...

    smack(4.1.6)+openfire(4.0.2)的运用实践的测试用例

    Smack是Java语言编写的一个XMPP(Extensible Messaging and Presence Protocol)客户端库,它提供了丰富的API来处理XMPP协议的各种操作,包括登录、发送消息、创建群聊、管理联系人等。在4.1.6版本中,Smack进行了多...

    Android代码-基于openfire和smack的安卓xmpp客户端

    它提供了API,使开发者能够轻松地建立连接、登录、发送和接收消息、管理好友列表、处理在线状态以及实现推送通知等功能。在Android项目中集成Smack,需要在build.gradle文件中添加依赖,然后在代码中实例化XMPP连接...

    openfire android客户端

    例如,开发者可以使用这些库来建立连接、登录、创建会话、发送文本、图片或其他类型的消息,并处理来自服务器的各种事件,如新消息通知、好友上线状态更新等。 为了在Android客户端上成功集成Openfire,开发者需要...

    Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现.zip

    开发者需要在自己的服务器上部署Openfire,配置好服务器设置后,Android客户端便可以通过Smack库连接到Openfire,完成用户注册、登录和通信。 4. **Android即时通讯实现**:在Android端,首先需要添加Smack库的依赖...

Global site tag (gtag.js) - Google Analytics