基于Smack3.0.4+ Openfire3.10.2下学习开发IM(四)用户分组操作:添加和删除分组、好友添加指定分组和不指定分组(Roster、RosterGroup和RosterEntry)

虾米姐 阅读:580 2021-03-31 22:13:08 评论:0

以前学习过用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为服务器端口号

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; 
	} 
 
} 
二、添加一个分组 

/**  
     * 添加一个分组  
     *   
     * @param roster  
     * @param groupName  
     * @return  
     */   
    public static boolean addGroup(Roster roster, String groupName) {   
        try {   
            roster.createGroup(groupName);   
            return true;   
        } catch (Exception e) {   
            e.printStackTrace();   
            return false;   
        }   
    }  

三、 删除一个分组 (备注:smack暂时不支持删除分组) 

  /**  
     * 删除一个分组 (备注:smack暂时不支持删除分组) 
     *   
     * @param roster  
     * @param groupName  
     * @return  
     */   
    public static boolean removeGroup(Roster roster, String groupName) {   
       return false; 
    }  
四、 添加好友 无分组 

 /**  
     * 添加好友 无分组  
     *   
     * @param roster  
     * @param userName  
     * @param name  
     * @return  
     */   
    public static boolean addUser(Roster roster, String userName, String name) {   
        try {   
            roster.createEntry(userName, name, null);   
            return true;   
        } catch (Exception e) {   
            e.printStackTrace();   
            return false;   
        }   
    }  
相关截图:


五、添加好友 有分组 

 /**  
     * 添加好友 有分组  
     *   
     * @param roster  
     * @param userName  
     * @param name  
     * @param groupName  
     * @return  
     */   
    public static boolean addGroupUser(Roster roster, String userName, String name,   
            String groupName) {   
        try {   
            roster.createEntry(userName, name, new String[] { groupName });   
            return true;   
        } catch (Exception e) {   
            e.printStackTrace();   
            return false;   
        }   
    }  
相关截图:


六、删除好友

  
    /**  
     * 删除好友  
     *   
     * @param roster  
     * @param userName  
     * @return  
     */   
    public static boolean removeUser(Roster roster, String userName) {   
        try {   
            if (userName.contains("@")) {   
                userName = userName.split("@")[0];   
            }   
   
            RosterEntry entry = roster.getEntry(userName);   
            System.out.println("删除好友:" + userName);   
            System.out.println("User." + roster.getEntry(userName) == null);   
            roster.removeEntry(entry);   
   
            return true;   
        } catch (Exception e) {   
            e.printStackTrace();   
            return false;   
        }   
    }  
相关截图:

 源码下载地址:OpenFire3.10.2+Smack3.0.4



声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号