openfire ping的smack解决方案(维持在线状态)

Posted tiancai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openfire ping的smack解决方案(维持在线状态)相关的知识,希望对你有一定的参考价值。

连接中关联如下:

Java代码  技术分享图片
  1.              // iq提供者  
  2. roviderManager.getInstance().addIQProvider("ping", "urn:xmpp:ping",  
  3.     new PingIQProvider());  
  4. onnection.addPacketListener(new PacketListener() {  
  5.   
  6. @Override  
  7. public void processPacket(Packet p) {  
  8.     PingIQ pingIQ = (PingIQ) p;  
  9.     IQ pongIQ = pingIQ.createResultIQ(pingIQ);  
  10.     // 返回  
  11.     connection.sendPacket(pongIQ);  
  12.   
  13. }  
  14. new PacketTypeFilter(PingIQ.class));  

 

两个关联类,PingIQ,PingIQProvider

Java代码  技术分享图片
  1. import org.jivesoftware.smack.packet.IQ;  
  2.   
  3. public class PingIQ extends IQ {  
  4.   
  5.     public static final String ELEMENT = "ping";  
  6.     public static final String NAMESPACE = "urn:xmpp:ping";  
  7.   
  8.     @Override  
  9.     public String getChildElementXML() {  
  10.         StringBuffer sb = new StringBuffer();  
  11.         sb.append("<").append(ELEMENT).append(" xmlns="").append(NAMESPACE)  
  12.                 .append("">");  
  13.   
  14.         sb.append("</").append(ELEMENT).append(">");  
  15.         return sb.toString();  
  16.   
  17.     }  
  18.   
  19. }  

 

Java代码  技术分享图片
  1. import org.jivesoftware.smack.packet.IQ;  
  2. import org.jivesoftware.smack.provider.IQProvider;  
  3. import org.xmlpull.v1.XmlPullParser;  
  4.   
  5. public class PingIQProvider implements IQProvider {  
  6.   
  7.     @Override  
  8.     public IQ parseIQ(XmlPullParser parser) throws Exception {  
  9.         // TODO Auto-generated method stub  
  10.         PingIQ iq = new PingIQ();  
  11.         return iq;  
  12.     }  
  13.   
  14. }  

 

报文如下: 

 

Java代码  技术分享图片
    1. <iq xmlns="jabber:client" type="get" id="65dfds" from="localhost" to="[email protected]/test"><ping xmlns="urn:xmpp:ping"/></iq>  
    2.   
    3.   
    4. <iq type="result" to="localhost" id="65dfds"/> 

http://linyu19872008.iteye.com/blog/1840596

以上是关于openfire ping的smack解决方案(维持在线状态)的主要内容,如果未能解决你的问题,请参考以下文章

Android 聊天是不是有任何 Openfire smack 替代方案?

如何在 Openfire 中使用 smack

本地主机上 Smack 和 Openfire 之间的路由错误

Openfire:在android上使用smack向特定人广播消息

使用 xmpp + smack + openfire 在 android 中阻止用户

无法通过使用 smack、openfire 获得名册