Openfire 模拟发送虚拟在线状态


Openfire 模拟发送虚拟在线状态

  1. public String SendPresence(String from, String to, String type,String Status) {  
  2.         String domain = JiveGlobals.getProperty("xmpp.domain");  
  3.         StringBuffer result = new StringBuffer();  
  4.         result.append("<?xml version='1.0' encoding='UTF-8'?>");  
  5.         result.append("<SendPresence>");  
  6.         result.append("<Presence>");  
  7.         result.append("<From>" + from + "</From>");  
  8.         result.append("<To>" + to + "</To>");  
  9.         result.append("<msg>" + type + "</msg>");  
  10.         result.append("<Domain>" + domain + "</Domain>");  
  11.         result.append("</Presence>");  
  12.         result.append("<result>");  
  13.         XMPPServer server = XMPPServer.getInstance();  
  14.         SessionManager sessionManager = server.getSessionManager();  
  15.          
  16.         PresenceRouter presenceRouter=server.getPresenceRouter();  
  17.         Presence presence = new Presence();  
  18.         presence.setFrom(from);  
  19.         presence.setTo(to+"@"+domain);  
  20.         //空闲  在线  
  21.         presence.setStatus(Status);  
  22.         if("0".equals(type)){  
  23.             //聊天框上面的状态  
  24.             presence.setShow(Presence.Show.away);  
  25.         }else{  
  26.             presence.setShow(Presence.Show.chat);  
  27.         }  
  28.          
  29.         result.append("1");  
  30.         try {  
  31.             presenceRouter.route(presence);  
  32.             for (ClientSession cs : sessionManager.getSessions()) {  
  33.                 cs.process(new NovonOpenfireStatusIQ(1, presence.getStatus(),  
  34.                         cs.getAddress(), presence.getFrom()));  
  35.     }  
  36.         } catch (Exception e) {  
  37.             Log.error("WebService SendPresence:" + e);  
  38.             result.append("0");  
  39.         }  
  40.         result.append("</result>");  
  41.         result.append("</SendPresence>");  
  42.         return result.toString();  
  43.     } 

其中 NovonOpenfireStatusIQ  定义为 如下

  1. import jit.base.dom.common.ElementName;  
  2. import jit.base.dom.common.NameSpace;  
  3. import jit.base.dom.status.StatusNode;  
  4. import jit.base.dom.status.StatusRoot;  
  5.  
  6. import org.dom4j.Element;  
  7. import org.xmpp.packet.IQ;  
  8. import org.xmpp.packet.JID;  
  9.  
  10. public class NovonOpenfireStatusIQ extends IQ {  
  11.  
  12.     public NovonOpenfireStatusIQ(int available, String status, JID to, JID from) {  
  13.         this.setTo(to);  
  14.         this.setFrom(from);  
  15.         init(available, status);  
  16.     }  
  17.  
  18.         void init(int available, String status) {  
  19.         Element childElement;  
  20.         childElement = setChildElement(ElementName.PRESENCECHANGED, NameSpace.STATUS_CHANGED);  
  21.         StatusRoot sroot = new StatusRoot();  
  22.         StatusNode statusNode = new StatusNode(getFrom().toString(), available, status);  
  23.         sroot.add(statusNode);  
  24.         childElement.add(sroot.getXml());  
  25.     }  

Openfire 的详细介绍:请点这里
Openfire 的下载地址:请点这里

CentOS下Openfire详细安装过程

CentOS 5.4下基于Jabber/XMPP协议的Openfire服务器配置笔记

Ubuntu 12.04 安装Openfire

相关内容