基于Openfire Smack开发即时通讯应用、Spark安装,注册,登录,退出登录(二)

本文详细介绍如何使用Smack API与Openfire服务器交互,包括环境搭建、登录、注册及密码修改等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇已经把服务器的Openfire环境搭建好了,现在我们就可以来搭建应用App的环境了这样就可以使用Smack的API来与服务器进行通信了。

一:继续去igniterealtime下载Smack的jar包和Spark.exe

这里写图片描述

二:Spak,第一次使用需要设置点东西,不然登录不上。

这里写图片描述

  1. 点击进入高级,将倒数第三,第二个勾上这样就可以登录了(至于为什么自己领悟吧 ^_^)
    这里写图片描述

  2. 现在我们随便登录一个帐号,域名填写你服务器的ip地址(要是没有可以进入后台手动创建一个)
    这里写图片描述

  3. 安装好了这个,在开发的时候就非常方便测试了。

三:应用开发所需要的jar包(缺一不可^_^)

这里写图片描述

jxmpp的两个jar包igniterealtime官网并没有下载,这里给出下载链接jxmpp

四:搞了这么久终于可以开始敲代码了,先来个登录:

这里有几点需要注意的地方:
  1. XMPPTCPConnection connection //全局就只能有一个,所有的操作基本上都是基于connection
  2. 由于使用的是TCP连接,所以还得保证connection不死所以最好就放在服务中进行
  3. 第一步就是让你的应用连接上Openfire服务器

private XMPPTCPConnection connection;
     /**
     * 获得与服务器的连接
     *
     * @return
     */
    public XMPPTCPConnection getConnection() {
        try {
            if (connection == null) {
                XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
                        //服务器IP地址
                        .setHost("119.29.193.12")
                        //服务器端口
                        .setPort(5222)
                        //服务器名称(管理界面的 主机名)
                        .setServiceName("izqhrnmkjn55syz")
                        //是否开启安全模式
                        .setSecurityMode(XMPPTCPConnectionConfiguration.SecurityMode.disabled)
                        //是否开启压缩
                        .setCompressionEnabled(false)
                        //开启调试模式
                        .setDebuggerEnabled(true).build();
                connection = new XMPPTCPConnection(config);
                connection.connect();
            }
            return connection;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return connection;
    }

四:注册用户,Map中对应一些用户资料;由于方法没有返回值所以操作是否成功就看会不会抛异常若不会则成功了。

   /**
     * 创建一个新用户
     *
     * @param username 用户名
     * @param password 密码
     * @param attr     一些用户资料
     * @see AccountManager
     */
    public boolean registerAccount(String username, String password, Map<String, String> attr) {
        AccountManager manager = AccountManager.getInstance(connection);
        try {
            if (attr == null) {
                manager.createAccount(username, password);
            } else {
                manager.createAccount(username, password, attr);
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

attr对应的一些属性值 name;email;first;last;city;state;zip;
phone;url;date;misc;text;remove(可以查看AccountManager中的getAccountAttributes()函数注释)

五: 登录操作,查看结果同上。

    /**
     * 登录
     *
     * @param userName 用户名
     * @param password 密码
     */
    public void login(final String userName, final String password) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    connection.login(userName, password);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

六:退出登录

    /**
     * 退出登录
     *
     * @return code
     * @code true 退出成功
     * @code false 退出失败
     */
    public boolean logout() {
        try {
            connection.instantShutdown();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }

七:修改用户密码

    /**
     * 修改密码
     *
     * @param newPassword  新密码
     * @return code
     * @code true 修改成功
     * @code false 修改失败
     */
    public boolean changePassword(String newPassword) {
        try {
            AccountManager manager = AccountManager.getInstance(connection);
            manager.changePassword(newPassword);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

结语:Smack的Api还是相对比较简单的,这个版本的Api基本上都是使用的单例模式所以也非常好些

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code-Porter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值