public String SendPresence(String from, String to, String type,String Status) {
String domain = JiveGlobals.getProperty("xmpp.domain");
StringBuffer result = new StringBuffer();
result.append("<?xml version='1.0' encoding='UTF-8'?>");
result.append("<SendPresence>");
result.append("<Presence>");
result.append("<From>" + from + "</From>");
result.append("<To>" + to + "</To>");
result.append("<msg>" + type + "</msg>");
result.append("<Domain>" + domain + "</Domain>");
result.append("</Presence>");
result.append("<result>");
XMPPServer server = XMPPServer.getInstance();
SessionManager sessionManager = server.getSessionManager();
PresenceRouter presenceRouter=server.getPresenceRouter();
Presence presence = new Presence();
presence.setFrom(from);
presence.setTo(to+"@"+domain);
//空闲 在线
presence.setStatus(Status);
if("0".equals(type)){
//聊天框上面的状态
presence.setShow(Presence.Show.away);
}else{
presence.setShow(Presence.Show.chat);
}
result.append("1");
try {
presenceRouter.route(presence);
for (ClientSession cs : sessionManager.getSessions()) {
cs.process(new NovonOpenfireStatusIQ(1, presence.getStatus(),
cs.getAddress(), presence.getFrom()));
}
} catch (Exception e) {
Log.error("WebService SendPresence:" + e);
result.append("0");
}
result.append("</result>");
result.append("</SendPresence>");
return result.toString();
}
其中 NovonOpenfireStatusIQ 定义为 如下
import jit.base.dom.common.ElementName;
import jit.base.dom.common.NameSpace;
import jit.base.dom.status.StatusNode;
import jit.base.dom.status.StatusRoot;
import org.dom4j.Element;
import org.xmpp.packet.IQ;
import org.xmpp.packet.JID;
public class NovonOpenfireStatusIQ extends IQ {
public NovonOpenfireStatusIQ(int available, String status, JID to, JID from) {
this.setTo(to);
this.setFrom(from);
init(available, status);
}
void init(int available, String status) {
Element childElement;
childElement = setChildElement(ElementName.PRESENCECHANGED, NameSpace.STATUS_CHANGED);
StatusRoot sroot = new StatusRoot();
StatusNode statusNode = new StatusNode(getFrom().toString(), available, status);
sroot.add(statusNode);
childElement.add(sroot.getXml());
}
}
分享到:
相关推荐
安装openfire的详细过程,手把手的教你,
自己写的获取所有在线用户的openfire插件,直接上传到openfire服务器即可使用,访问路径为host:port/plugins/onlines/listall
联系人分组,群聊,修改在线状态,邀请群人员,设置群管理员,踢人。。类似QQ的功能。 页面中以script的形势引入miq.jsp稍作修改配置成自己的openfire服务器即可用
目前研究插件的还比较少,简单做一下学习总结。详细介绍请看我的blog:http://hi.baidu.com/jyleon/blog/item/5a6627dd7fc4dbd18d1029bf.html
接受ActiveMQ信息,通过openfire公告发送给指定用户,xml串解析
功能实现了基本聊天功能外还有离线消息、查看历史聊天记录、消息提醒等,代码结构层次也很清晰,很值得下载看看
openfire记录在线统计人数插件
对Openfire进行扩展,支持在线指定聊天室和全部在线人员的查看。
扩展openfire的服务端代码。实现了图片,语音,视频发送,可创建群组。发表签名等功能。可作为android和ios聊天的服务端。
代码里做了逻辑处理,会随机只返回3个,改下就可以了 访问路径 127.0.0.1:8080/plugins/onlineuser/getallusers
openfire聊天的java端源代码,已测试,可直接导入eclipse.
Openfire最主要的功能是实现XMPP服务器,Openfire的核心功能可以概括为:连接管理、消息解析、消息路由、消息发送.
即时通讯Im Demo,用openfire做服务器,C#agsXmpp做客户端连接实现即时通讯。只实现登陆,接收发送消息。
Smack是即时通信客户端编程库,目前我已测通通过jsp使用smack的API向openfire注册用户发送消息,并且可以通过监听器获得此用户的应答消息。 通过smack向msn用户和QQ用户,gtalk用户发送消息应该也可以实现,关于向...
Openfire数据结构详解
openfire使用hazelCast集群
red5 sparkweb openfire 在线聊天 war中含有sparkweb 目录。 直接将目录war放到 tomcat下的webapps下。tomcat会自动解压。 详情请见: http://shendixiong.iteye.com/admin/blogs/1954457
聊天 、即时通讯、服务器搭建、推送等等.... openfire api spark api asmark api 还有openfire和spark 源码导入myeclipae步骤详解!
openfire简介.pdf openfire简介.pdf
Openfire3.7.1集群配置,针对需要多用户同时在线的openfire架构集群配置设置