您的位置:首页 > 运维架构

关于判断openfire 服务器中用户的在线状态问题

2014-12-11 16:36 288 查看
    虽然接触了openfire有段时间了,但还是没有深入去理解其原理,所以,遇到一些新问题就有点束手无策,今天又遇到一个,开始以为用户的在线状态会存数据库里面呢,没想到openfire没这么干,存在了session里面,找了很多资料,终于找到了方法,好像也还很简单的。废话不多说,进入正题:
        首先我们要确保openfire 服务器中安装了presence 插件,同时在openfire后台中的服务器设置中进入Presence Service处,设置任何人都可以访问的权限(不过这样设置的话会对安全性有一定影响)。

        然后就是代码判断了:

    //传入路径格式:  String url = "http://localhost:9090/plugins/presence/status?jid=admin@meson.com&type=xml";

      public static int IsUserOnLine(String strUrl) {

        int state = 0;

        //返回值 : 0 - 用户不存在; 1 - 用户在线; 2 - 用户离线

        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();

                    //System.out.println(strFlag);

                    oIn.close();

                    if (strFlag.indexOf("type=\"unavailable\"") >= 0) {

                        state = 2;

                    }

                    if (strFlag.indexOf("type=\"error\"") >= 0) {

                        state = 0;

                    } else if (strFlag.indexOf("priority") >= 0 || strFlag.indexOf("id=\"") >= 0) {

                        state = 1;

                    }

                }

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

        return state;

    }   //这是网上copy的代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息