打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
openfire xmpp 如何判断用户是否在线

想象中如此简单的功能,想不到却这般大费周折。
如要实现,必须先确保:
1. openfire中安装有“Presence” 插件。
 
2. 确保该插件设置可允许任何人访问(如果是跨域浏览的话)
 

然后通过如下方式访问:http://www.igniterealtime.org/projects/openfire/plugins/presence/readme.html

访问结果如下:
 账号 状态 xmltext 
 user1 不存在 <presence type="error" from="user1@my.openfire.com"><error code="403" type="auth"><forbidden xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></presence> null
 user2 离线 <presence type="unavailable" from="user2@my.openfire.com"><status>Unavailable</status></presence> Unavailable
 user8 在线 <presence from="user8@my.openfire.com/trm"><priority>0</priority></presence>
或者
<presence id="6Mgiu-13" from="user8@my.openfire.com/Smack"/>
 null
   
java代码:
import java.net.*;
import java.io.*;

/**
 * 判断openfire用户的状态
 *     strUrl : url格式 - http://my.openfire.com:9090/plugins/presence/status?jid=user1@my.openfire.com&type=xml
 *    返回值 : 0 - 用户不存在; 1 - 用户在线; 2 - 用户离线
 *  说明   :必须要求 openfire加载 presence 插件,同时设置任何人都可以访问
 */    
public  static short IsUserOnLine(String strUrl)
{
    short            shOnLineState    = 0;    //-不存在-
    
    try
    {
        URL             oUrl     = new URL(strUrl);
    URLConnection     oConn     = oUrl.openConnection();
    if(oConn!=null)
    {
        BufferedReader     oIn = new BufferedReader(new InputStreamReader(oConn.getInputStream()));
        if(null!=oIn)
        {
            String strFlag = oIn.readLine();
            oIn.close();
            
            if(strFlag.indexOf("type=\"unavailable\"")>=0)
            {
                shOnLineState = 2;
            }
            if(strFlag.indexOf("type=\"error\"")>=0)
            {
                shOnLineState = 0;
            }
            else if(strFlag.indexOf("priority")>=0 || strFlag.indexOf("id=\"")>=0)
            {
                shOnLineState = 1;
            }
        }
    }
    }
    catch(Exception e)
    {            
    }
    
    return     shOnLineState;
}



相关:
openfire如何获取所有在线用户

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
android基于xmpp的即时通讯应用
Android基于XMPP Smack Openfire下学习开发IM(二)对分组、好友和头像等一些操作
Openfire asmack spark开发桌面与android平台的即时通讯软件
即时通讯软件openfire+spark+smack - 相信自己能行,那就一定能行 - ...
XMPP协议学习笔记
《高性能的RTC服务器OpenFire》
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服