shyboy0932

openfire 连接实例


        

        if (android.os.Build.VERSION.SDK_INT > 9) {

            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

            StrictMode.setThreadPolicy(policy);

        }

         ConnectionConfiguration config = new ConnectionConfiguration("chat.lygfls.com", 5222,"mys");

    Connection connection;

    Chat chat = null;

    ServiceDiscoveryManager sdm;

    FileTransferManager filemanager;

     

    /* 这里我们需要特别当心的是先不要告诉openfire服务器你上线了,否则永远也拿不到离线消息

    */ 

    config.setSendPresence(false); 

    config.setReconnectionAllowed(true);

    config.setSecurityMode(SecurityMode.disabled);

    config.setSASLAuthenticationEnabled(false); // true/false

    config.setCompressionEnabled(false);

    connection = new XMPPConnection(config);

    try {


connection.connect();

System.out.println("connection---------->"+connection.isConnected());

if(connection.isConnected()){

connection.login("test", "fkegyss");

}


    }catch(Exception e){

    e.printStackTrace();

    Log.i("错误","连接不上服务");

    }

     

     

     

    OfflineMessageManager offlineManager = new OfflineMessageManager(

    connection);

  try {

  Iterator<org.jivesoftware.smack.packet.Message> it = offlineManager

  .getMessages();


  //System.out.println(offlineManager.supportsFlexibleRetrieval());

  System.out.println("离线消息数量: " + offlineManager.getMessageCount());


 

  Map<String,ArrayList<Message>> offlineMsgs = new HashMap<String,ArrayList<Message>>();

 

  while (it.hasNext()) {

  org.jivesoftware.smack.packet.Message message = it.next();

  System.out

  .println("收到离线消息, Received from 【" + message.getFrom()

  + "】 message: " + message.getBody());

 

  String fromUser = message.getFrom().split("/")[0];


  if(offlineMsgs.containsKey(fromUser))

  {

  offlineMsgs.get(fromUser).add(message);

  }else{

  ArrayList<Message> temp = new ArrayList<Message>();

  temp.add(message);

  offlineMsgs.put(fromUser, temp);

  }

  }


  //在这里进行处理离线消息集合......

  Set<String> keys = offlineMsgs.keySet();

  Iterator<String> offIt = keys.iterator();

  while(offIt.hasNext())

  {

  String key = offIt.next();  

         ArrayList<Message> ms = offlineMsgs.get(key);  

   

         for (int i = 0; i < ms.size(); i++) {  

             System.out.println("-->" + ms.get(i));  

         }  

  }

 

 

  offlineManager.deleteMessages();

  } catch (Exception e) {

  e.printStackTrace();

  }

     

 

  Presence presence = new Presence(Presence.Type.available);  

  connection.sendPacket(presence);//上线了  

 

 

  Message message = new Message("admin@chat.lygfls.com" , Type.chat);

        message.setBody("中文玉奇才;村要堙");

        message.setSubject("title");

        message.setProperty("color", "red");

        connection.sendPacket(message);

 

  /*Message newmsg = new Message();   

  newmsg.setTo("shimiso@csdn.shimiso.com");  

  newmsg.setSubject("重要通知");  

  newmsg.setBody("今天下午2点60分有会!");  

  newmsg.setType(Message.Type.headline);// normal支持离线   

  connection.sendPacket(newmsg); */

  /*Message message = new Message("admin@192.168.200.108" , Type.headline);

         message.setBody("通知消息");

         message.setSubject("title");

         message.setProperty("color", "red");

         connection.sendPacket(message);

         */

     

    //Type.headline通知,Type.normal广播

    /* message = new Message("admin@192.168.200.108" , Type.normal);

         //Message message = new Message(sessid, Type.chat);

         message.setBody("广播消息,大家好");

         message.setSubject("title");

         message.setProperty("color", "red");

         connection.sendPacket(message);*/

 

 

  PacketFilter filter = new MessageTypeFilter(Message.Type.chat);

     

  connection.addPacketListener(new PacketListener() {

           public void processPacket(Packet packet) {

               Message message = (Message) packet;

               if (message.getBody() != null) {

                   String fromName = StringUtils.parseBareAddress(message.getFrom());

                   System.out.println("对方发来:[" + message.getBody() + "] from ["

                           + fromName + "]");

                   }

           }

       }, filter);

       

     

    /* 

    PacketFilter filter = new MessageTypeFilter(Message.Type.chat);

       connection.addPacketListener(new PacketListener() {

           public void processPacket(Packet packet) {

               Message message = (Message) packet;

               if (message.getBody() != null) {

                   String fromName = StringUtils.parseBareAddress(message.getFrom());

                   System.out.println("Got text [" + message.getBody() + "] from ["

                           + fromName + "]");

                   }

           }

       }, filter);

    if(null == chat){

chat = connection.getChatManager().createChat("admin@192.168.200.108", new MessageListener(){

public void processMessage(Chat arg0, Message arg1) {

System.out.println("lg:"+arg1.getLanguage()+":message2-------------------->"+arg1.getBody()+":"+arg1.getFrom());

}

});

}

    try {

    Message message2 = new Message();

    //message.setProperty(IMMessage.KEY_TIME, time);

    message2.setBody("boydsddddddddddddddddddd");

    chat.sendMessage(message2);//这种可发离线消息

//chat.sendMessage("你好");//这种不能发离线消息

connection.disconnect();

} catch (XMPPException e) {

e.printStackTrace();

}*/


        


评论