歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved