openfire+smack获取离线消息

ConnectionConfiguration connConfig = new ConnectionConfiguration("127.0.0.1");

//登录前先设置不发送在线状态,因offlineManager调用必须在用户状态为离线状态下获取,具体参照smack javadoc中的offlineManager类英文说明
connConfig.setSendPresence(false);
connection = new XMPPConnection(connConfig);
connection.connect();

OfflineMessageManager offlineManager = new OfflineMessageManager(sample.getConnection()); 
sample.login("test", "test");
//System.out.println(offlineManager.supportsFlexibleRetrieval()); //获取支持灵活的检索状态,正常应该是为true,个人理解为服务器的离线消息功能支持开关
System.out.println("离线消息数?: " + offlineManager.getMessageCount());
           
Iterator<Message> it = offlineManager.getMessages(); 
           
while (it.hasNext()) {
 Message message = it.next();
 System.out.println(message.getBody());
 }
   
offlineManager.deleteMessages();  //上报服务器已获取,需删除服务器备份,不然下次登录会重新获取

Presence presence = new Presence(Presence.Type.available);//此时再上报用户状态
sample.getConnection().sendPacket(presence);

转载于:https://www.cnblogs.com/wangtale/archive/2013/04/26/3044778.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值