歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Openfire 模擬發送虛擬在線狀態

Openfire 模擬發送虛擬在線狀態

日期:2017/3/1 10:37:04   编辑:Linux編程

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. PresenceRouter presenceRouter=server.getPresenceRouter();
  16. Presence presence = new Presence();
  17. presence.setFrom(from);
  18. presence.setTo(to+"@"+domain);
  19. //空閒 在線
  20. presence.setStatus(Status);
  21. if("0".equals(type)){
  22. //聊天框上面的狀態
  23. presence.setShow(Presence.Show.away);
  24. }else{
  25. presence.setShow(Presence.Show.chat);
  26. }
  27. result.append("1");
  28. try {
  29. presenceRouter.route(presence);
  30. for (ClientSession cs : sessionManager.getSessions()) {
  31. cs.process(new NovonOpenfireStatusIQ(1, presence.getStatus(),
  32. cs.getAddress(), presence.getFrom()));
  33. }
  34. } catch (Exception e) {
  35. Log.error("WebService SendPresence:" + e);
  36. result.append("0");
  37. }
  38. result.append("</result>");
  39. result.append("</SendPresence>");
  40. return result.toString();
  41. }

其中 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. import org.dom4j.Element;
  6. import org.xmpp.packet.IQ;
  7. import org.xmpp.packet.JID;
  8. public class NovonOpenfireStatusIQ extends IQ {
  9. public NovonOpenfireStatusIQ(int available, String status, JID to, JID from) {
  10. this.setTo(to);
  11. this.setFrom(from);
  12. init(available, status);
  13. }
  14. void init(int available, String status) {
  15. Element childElement;
  16. childElement = setChildElement(ElementName.PRESENCECHANGED, NameSpace.STATUS_CHANGED);
  17. StatusRoot sroot = new StatusRoot();
  18. StatusNode statusNode = new StatusNode(getFrom().toString(), available, status);
  19. sroot.add(statusNode);
  20. childElement.add(sroot.getXml());
  21. }
  22. }

Openfire 的詳細介紹:請點這裡
Openfire 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved