openfire 自动添加好友
2015-12-22 14:20
447 查看
根据openfire源码的提供,其中SubscriptionPlugin这个插件已经实现了自动添加了好友的功能,但好我项目的的要求还是有些不一样,我根据源码中的内容自己编写了一个插件,关键代码如下:
而在其中,缓存的刷新尤其重要,不然,只有重启服务器,你才能看到两个好友之间才是真正的订阅关系的!
public static void acceptSubscription(Packet packet ,PresenceRouter router) throws PacketRejectedException { String serverName = XMPPServer.getInstance().getServerInfo().getXMPPDomain(); if (getSubscriptionLevel().equals(LOCAL)) { String toDomain = packet.getTo().getDomain(); String fromDomain = packet.getFrom().getDomain(); if (!toDomain.equals(serverName) || !fromDomain.equals(serverName)) { return; } } Presence presence = new Presence(); presence.setType(Presence.Type.subscribed); presence.setTo(packet.getTo()); presence.setFrom(packet.getFrom()); router.route(presence); String toUserName = packet.getTo().getNode(); try { // 获取昵称 String nickName = UserManager.getInstance().getUser(toUserName).getName(); if (nickName == null || nickName.trim().length() == 0){ nickName = packet.getFrom().getNode(); } // 添加一个分组为fans的名 List<String> groups = new ArrayList<String>(); groups.add("fans"); RosterItem item = new RosterItem(packet.getFrom(), RosterItem.SUB_BOTH, RosterItem.ASK_NONE, RosterItem.RECV_NONE, nickName, groups); RosterManager.getRosterItemProvider().createItem(toUserName, item); // 将状态设置为 “相互为好友” Iterator<RosterItem> rosterItemIterator= RosterManager.getRosterItemProvider().getItems(packet.getFrom().getNode()); if (rosterItemIterator != null){ while (rosterItemIterator.hasNext()) { RosterItem rosterItem = (RosterItem) rosterItemIterator.next(); if (toUserName.equals(rosterItem.getJid().getNode())){ rosterItem.setSubStatus(RosterItem.SUB_BOTH); RosterManager.getRosterItemProvider().updateItem(toUserName, rosterItem); break; } } } Cache cache[] = CacheFactory.getAllCaches(); if (cache != null){ for (Cache cache2 : cache) { if("Roster".equals(cache2.getName())){ cache2.clear(); break; } } } } catch (Exception e) { e.printStackTrace(); } throw new PacketRejectedException(); }
而在其中,缓存的刷新尤其重要,不然,只有重启服务器,你才能看到两个好友之间才是真正的订阅关系的!
相关文章推荐
- 终结者:具体解释Nginx(一)
- LinuxUSB驱动程序调试--009:编写应用程序---验证协议【转】
- Redhat与CentOS版本对照表(补充5.4和5.5)
- CentOS 7.0系统安装配置图解教程
- JOptionPane类提示框的一些常用的方法
- 三层架构及生活实例
- Upgrade Python And Pip On CentOS 6.x
- linux重定向(shell重定向,输入重定向,输出重定向)
- LDD: ch4补充,seq_file的介绍
- Hive分析hadoop进程日志
- libexpat.a(libexpat.so.0) is needed by apache
- linux下安装node.js
- Hadoop学习笔记(十一)思维导图整理(附源文件)
- Tomcat 初探(一) 简介
- Renascence架构介绍——目录
- linux ibus提示没有输入框
- openfire--好友管理各种状态纠结
- Myeclipse远程调试Windows下的Tomcat
- Linux新建用户 useradd&groupadd
- Top K问题