openfire xmpp 如何判断用户是否在线
2013-10-11 13:56
399 查看
想象中如此简单的功能,想不到却这般大费周折。
如要实现,必须先确保:
1. openfire中安装有“Presence” 插件。
2. 确保该插件设置可允许任何人访问(如果是跨域浏览的话)
然后通过如下方式访问:http://www.igniterealtime.org/projects/openfire/plugins/presence/readme.html。
访问结果如下:
账号 | 状态 | xml | text |
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 |
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 xmpp 如何判断用户是否在线
- openfire xmpp 通过presence service判断用户是否在线
- Asp.Net 中如何判断用户是否在线
- 如何判断用户是否是一个管理员
- magento -- magento中如何判断一个用户是否已经登陆
- web项目如何知道给别人发送的邮箱,判断用户是否读了邮件
- 如何判断用户是否是第一次进入应用程序(仿微信进入动画)
- 转一份在 51testing 上的讨论——如何测试一个门户网站是否可以支持10万用户同时在线?
- discuz如何判断用户是否登录的
- js如何判断用户是否是用微信浏览器
- 判断用户是否在线
- 如何解决每次向后台发起请求时判断用户是否处于登录状态?
- 用JavaScript判断用户输入的数据是否如何要求!
- 如何获取系统Home(Launcher)应用判断用户是否处于home界面
- 判断用户是否在线及实现一个账号一个人登陆
- 如何判断用户是否具备管理员权限
- 如何判断Fragment是否对用户可见
- openfire服务端消息回执插件(接收方离线时的情况),判断用户的在线状态
- 如何判断用户输入的一个整数是否为2的整数幂
- Js - 判断用户是否上网(连接网络) - HTML5在线、离线online的使用