`
Blackbaby
  • 浏览: 185141 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

smack presence问题

阅读更多

Roser#getPresence(String user) will return null if the contact has no presence information available. This could be because the contact is offline or you are not subscribed to their presence

 

If you are getting null when your contact is online then it will be (most likely) one of two things.

 

1: Either you are not subscribed to the other contacts Presence. In which case you will need to before you are allowed to track their Online/Offline status.

 

2: As AWenckus mentioned, it can sometimes take a moment for the information to be sent so if you are performing this operation as soon as you login the method may well return null.

 

Far better to add a RosterListener to your connection to listen out for Presence changes.

 

Presence presence = (Presence)packet;
Presence.Mode presenceMode = presence.getMode();

if(presenceMode == Presence.Mode.AVAILABLE) {
    // user is online and available
}

if(presenceMode == Presence.Mode.AWAY) {
    //user is away
}
take for example two users:User A,User B

User A wants to see when User B is online.

User A sends a SUBSCRIBE packet to User B

User B then decides whether or not to allow User A to see when they are online.

If they accept the subscription requests they send a SUBSCRIBED packet

If they reject the subscription request they send a UNSUBSCRIBED packet.

 

参考:http://www.igniterealtime.org/community/message/115077#115077

分享到:
评论
2 楼 Blackbaby 2012-05-21  
qmzpanda 写道
hi,有个问题我想咨询你一下:
Roster在添加RosterListener 监听后,页面通过Xbosh协议发Presence,Rosterlistener的 presenceChange()方法会有延迟,有碰到过类似问题吗?


你是做web应用吧?我们之前用的strophe.js开发  没有遇到过哦
1 楼 qmzpanda 2012-05-19  
hi,有个问题我想咨询你一下:
Roster在添加RosterListener 监听后,页面通过Xbosh协议发Presence,Rosterlistener的 presenceChange()方法会有延迟,有碰到过类似问题吗?

相关推荐

    smack帮助文档

    Smack 是一个专为开发者设计的用于实现即时通讯(IM)和聊天功能的类库,它通过与XMPP(eXtensible Messaging and Presence Protocol)服务器通信来实现这一目标。XMPP 是一种基于XML的开放协议,由Jabber Software ...

    smack4.3.1

    Smack 是一个开源的、跨平台的即时通讯(IM)库,专为实现XMPP(Extensible Messaging and Presence Protocol)协议而设计。在Smack 4.3.1版本中,开发者能够利用这个强大的框架为Android移动端构建高效、安全的聊天...

    smack4.1.4 android 测试通过

    Smack 是一个开源的即时通讯库,主要用于实现XMPP(Extensible Messaging and Presence Protocol)协议。在Android平台上,开发者常使用Smack来构建聊天应用程序,因为它提供了丰富的API和功能,可以方便地创建...

    Smack文档中文版

    学习如何利用Smack提供的工具进行问题定位,能快速解决问题,提升开发效率。 10. **实战案例**:结合实际项目,如创建一个简单的聊天应用,将理论知识与实践相结合,能更好地掌握Smack的使用。 通过阅读《Smack...

    XMPP Smack java 聊天程序

    XMPP(Extensible Messaging and Presence Protocol)是一种开放的即时通讯协议,它允许用户进行实时通信,包括文字聊天、语音视频通话、文件传输等。Smack是XMPP的一个Java实现库,它为开发者提供了简单易用的API,...

    Smack帮助文档中文版

    Smack是一款开源的Java库,专门用于实现XMPP(Extensible Messaging and Presence Protocol)协议,它使得开发者可以轻松地在Java应用中构建实时通讯功能,如即时消息、群聊、在线状态管理和推送通知等。Openfire是...

    smack 3.2.2

    Smack 3.2.2 是一个专门针对Linux...同时,Smack的详尽文档和社区支持使得开发者能够快速上手并解决遇到的问题。总之,Smack 3.2.2 是构建基于XMPP的Linux应用的强大工具,为开发者提供了高效、可靠的即时通讯功能。

    Smack API java的类库

    Smack Android库提供了针对这些问题的解决方案。 在实际开发中,Openfire是一款流行的开源XMPP服务器,它支持多种客户端连接,包括使用Smack API的Java应用。Openfire提供了用户管理、群组管理、权限控制等一系列...

    smack类库详细介绍,【中文】

    Smack是一个开源的Java库,专门用于实现XMPP(Extensible Messaging and Presence Protocol)协议,这是一种基于XML的即时通讯协议。XMPP广泛应用于聊天、协作、物联网设备通信等多个领域。在本文中,我们将深入探讨...

    smack android

    Smack是一个开源的XMPP(eXtensible Messaging and Presence Protocol)库,广泛用于实现即时通讯和在线状态功能。在Android平台上,以往开发者通常需要使用Asmack,一个专门为Android优化的Smack版本,因为原版...

    smack包.zip

    "smack包.zip"就是这样一个工具包,它提供了在Android设备上实现XMPP(Extensible Messaging and Presence Protocol)协议的功能,从而让我们能够在基于Openfire服务器的环境中搭建起即时通讯系统。 XMPP是一种开放...

    smack 源码

    通过对Smack源码的深入研究,开发者可以更好地理解XMPP协议的工作原理,定制化需求,优化性能,并解决实际项目中遇到的问题。同时,源码学习也有助于开发者提升对网络通信、多线程、事件驱动编程等技术的理解。

    smack中文文档

    Smack是一款开源的Java库,专门用于实现XMPP(可扩展消息传递和 Presence 协议)协议,它允许用户创建即时通讯应用。由于原始的Smack文档主要为英文,对于中文使用者来说,可能存在一定的理解障碍。然而,尽管这里的...

    smack4.1.5依赖jar包以及demo

    Smack是一个开源的Java库,专门用于实现XMPP(可扩展消息传递和 Presence 协议),这是一种基于XML的协议,广泛用于即时通讯和在线状态管理。Smack4.1.5是该库的一个版本,提供了丰富的API来创建XMPP客户端、服务器...

    Android使用smack连接ejabberd服务器注册、收发消息

    在Android平台上,开发即时通讯应用时,我们常常会利用XMPP(Extensible Messaging and Presence Protocol)协议来实现。本文将详细讲解如何使用Smack库连接到ejabberd服务器,并进行用户注册、登录以及收发消息的...

    smack详细类库

    Smack是一个开源的Java库,专为实现XMPP(eXtensible Messaging and Presence Protocol)协议而设计,用于构建即时通讯(IM)应用。它的主要特点是提供简单易用且功能强大的API,使得开发者可以快速地构建聊天和消息...

    smack_4_1_3

    Smack是一个开源的Java库,专门用于XMPP(Extensible Messaging and Presence Protocol)协议的实现。这个库使得开发者能够轻松地在Java应用中构建实时通信功能,如即时消息、在线状态管理和多用户聊天。"smack_4_1_...

    Smack源码,很有用

    Smack是一款开源的Java库,专门用于实现XMPP(Extensible Messaging and Presence Protocol)协议,这是一种基于XML的即时通讯协议。XMPP广泛应用于聊天、协作工具、物联网设备间通信等多种场景。通过研究Smack的...

    smack4.2.2jar包

    Smack是一个流行的开源库,专为构建XMPP(Extensible Messaging and Presence Protocol)客户端而设计。XMPP是一种基于XML的开放标准,用于实现即时消息传递和在线状态共享。本文将深入探讨Smack 4.2.2版本,以及...

Global site tag (gtag.js) - Google Analytics