Openfire 模拟发送虚拟在线状态

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值