基于Smack3.0.4+ Openfire3.10.2下学习开发IM(二)用户分组信息(Roster、RosterGroup和RosterEntry)
2015-11-05 23:51
471 查看
以前学习过用Scoket 建立聊天,简单的建立聊天是没问题的,但如果要实现多人复杂的聊天,后台服务器代码就比较复杂,对于我这新手来讲就比较难了。后来在网上看到用openfire做服务器,利用强大的Smack API库来实现IM聊天就简单多了。
网上也有很多关于这方面的资料,我就在这里把网上的资料和自己的理解总结一下和大家一起交流学习。
需要用到以下几个工具:
Openfire 最新版本(openfire 3.10.2)
下载地址:http://www.igniterealtime.org/downloads/index.jsp
安装配置可参考:http://www.cnblogs.com/hoojo/archive/2012/05/17/2506769.html
Smack 最新版本(Smack4.1.4,而我选用的Smack是3.0.4版本)
下载地址:http://www.igniterealtime.org/downloads/index.jsp
需要安装的安装好,需要下载的下载好(这里就不多作介绍)。创建项目工程,导入Smack jar包,OK,下面就一起去学习怎么实现获得 用户分组信息等一些功能!
首先第一、与服务器建立好连接
关键代码:zhou_pc为服务器IP,5222为服务器端口号
通过Roster来获取所有分组,Roster可以通过connection.getRoster()来得到。
相关截图:
源码下载地址:OpenFire3.10.2+Smack3.0.4
网上也有很多关于这方面的资料,我就在这里把网上的资料和自己的理解总结一下和大家一起交流学习。
需要用到以下几个工具:
Openfire 最新版本(openfire 3.10.2)
下载地址:http://www.igniterealtime.org/downloads/index.jsp
安装配置可参考:http://www.cnblogs.com/hoojo/archive/2012/05/17/2506769.html
Smack 最新版本(Smack4.1.4,而我选用的Smack是3.0.4版本)
下载地址:http://www.igniterealtime.org/downloads/index.jsp
需要安装的安装好,需要下载的下载好(这里就不多作介绍)。创建项目工程,导入Smack jar包,OK,下面就一起去学习怎么实现获得 用户分组信息等一些功能!
首先第一、与服务器建立好连接
关键代码:zhou_pc为服务器IP,5222为服务器端口号
package com.openfire.util; import org.jivesoftware.smack.ConnectionConfiguration; import org.jivesoftware.smack.XMPPConnection; public class SmackConnectionUtil { private static XMPPConnection connection = null; public static XMPPConnection getInstance(String serverName, int port) { if (connection == null) { ConnectionConfiguration config = new ConnectionConfiguration(serverName, port); config.setSASLAuthenticationEnabled(false); connection = new XMPPConnection(config); } return connection; } }
二、查询所有分组
通过Roster来获取所有分组,Roster可以通过connection.getRoster()来得到。/** * 获取所有组 * * @param roster * @return List<RosterGroup> */ public static List<RosterGroup> getGroups(Roster roster) { List<RosterGroup> grouplist = new ArrayList<RosterGroup>(); Collection<RosterGroup> rosterGroup = roster.getGroups(); Iterator<RosterGroup> i = rosterGroup.iterator(); while (i.hasNext()) { grouplist.add(i.next()); } return grouplist; }
三、返回相应(groupname)组里的所有用户(RosterEntry)
/** * 返回相应(groupname)组里的所有用户(RosterEntry) * * @param roster * @param groupName * 组名 * @return */ public static List<RosterEntry> getEntriesByGroup(Roster roster, String groupName) { List<RosterEntry> Entrieslist = new ArrayList<RosterEntry>(); RosterGroup rosterGroup = roster.getGroup(groupName); Collection<RosterEntry> rosterEntry = rosterGroup.getEntries(); Iterator<RosterEntry> i = rosterEntry.iterator(); while (i.hasNext()) { Entrieslist.add(i.next()); } return Entrieslist; }
相关截图:
四、返回所有好友的用户信息(RosterEntry)
/** * 返回所有好友的用户信息(RosterEntry) * * @param roster * @return */ public static List<RosterEntry> getAllEntries(Roster roster) { List<RosterEntry> Entrieslist = new ArrayList<RosterEntry>(); Collection<RosterEntry> rosterEntry = roster.getEntries(); Iterator<RosterEntry> i = rosterEntry.iterator(); while (i.hasNext()) { Entrieslist.add(i.next()); } return Entrieslist; }
源码下载地址:OpenFire3.10.2+Smack3.0.4
相关文章推荐
- Linux下安装nodejs并创建express框架环境
- 浮动IP(Floating IPs):开始构建你的高可用性的应用
- 《HBase权威指南》读书笔记11:第十一章 性能优化
- MVC4 网站发布(整理+部分问题收集和解决方案)
- linux下安装yum命令安装lamp环境
- tar命令解压.zip文件出错:gzip: stdin has more than one entry--rest ignored
- 大学校园内使用桥接方式上网的虚拟机Linux无法ping通外网的原因
- linux中的静态库和动态库简介及生成过程示例
- opencv3 寻找亚像素角点-cornerSubPix函数-滚动条
- Linux下创建桌面快捷方式
- opencv3 寻找亚像素角点-cornerSubPix函数
- opencv3 实现Harris角点检测:cornerHarris函数-滚动条
- linux c/c++ 后台开发常用算法之:一致性哈希算法
- opencv3 实现Harris角点检测:cornerHarris函数
- opencv3 确定图像强角点-goodFeaturesToTrack函数-滚动条
- opencv3 确定图像强角点-goodFeaturesToTrack函数
- C语言开发Linux下web服务器(支持GET/POST,SSL,目录显示等)
- opencv3 实现模版匹配-鼠标事件
- 用IIS配置反向代理实现方法(图文)
- opencv3 实现模版匹配-matchTemplate函数