openfire维持在线状态,监听消息
public static void testLoginStatus()throws XMPPException,InterruptedException { AccountManager accountManager; final ConnectionConfiguration connectionConfig = new ConnectionConfiguration("127.0.0.1", Integer.parseInt("5222"), ""); // 允许自动连接 connectionConfig.setReconnectionAllowed(true); connectionConfig.setSendPresence(false); final Connection connection = new XMPPConnection(connectionConfig); try { connection.connect();// 开启连接 accountManager = connection.getAccountManager();// 获取账户管理类 } catch (XMPPException e) { throw new IllegalStateException(e); } connection.login("001", "001", ""); Presence presence=new Presence(Presence.Type.available); presence.setStatus("1"); connection.sendPacket(presence); ProviderManager.getInstance().addIQProvider("ping", "urn:xmpp:ping", new PingIQProvider()); connection.addPacketListener(new PacketListener() { @Override public void processPacket(Packet p) { try { Thread.sleep(50000); } catch (Exception ex){} PingIQ pingIQ = (PingIQ) p; IQ pongIQ = pingIQ.createResultIQ(pingIQ); // 返回 connection.sendPacket(pongIQ); }}, new PacketTypeFilter(PingIQ.class)); //Roster roster=connection.getRoster(); //roster.createEntry("002@127.0.0.1","001", new String[]{"Friends"}); //监听接收到的消息 包括单聊 群聊 和广播 // ChatManager cm=connection.getChatManager(); // cm.addChatListener(new ChatManagerListener() { // @Override // public void chatCreated(Chat chat, boolean create) { // chat.addMessageListener(new MessageListener() { // @Override // public void processMessage(Chat chat, Message msg) { // if (msg.getBody() != null) { // try { // System.out.println("cm:"+msg.getBody()); // System.out.println(chat.getParticipant()); // chat.sendMessage("你刚才说的是:" + msg.getBody()); // 发送消息 // } catch (XMPPException e) { // e.printStackTrace(); // } // } // } // }); // } // }); //单聊监听 Chat mychat = connection.getChatManager().createChat("002@10.39.73.150/Spark", // 接收端的JID,JID是要加域的 new MessageListener() { @Override public void processMessage(Chat chat, Message message) { String messageBody = message.getBody(); try { if (message.getBody()!=null) { System.out.println("接受到来自002的消息:" + message.getBody()); chat.sendMessage("您发的消息是:" + message.getBody()); } }catch (Exception ex){ System.out.println(ex.getMessage()); } } }); Message msg = new Message(); msg.setBody("upload/casePic/2016/5/11/14629304841938816.jpg"); mychat.sendMessage(msg); // connection.disconnect(); while (true); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通