基于Xmpp,Openfire和Asmack的聊天软件的开发(一)

2024-03-04 01:08

本文主要是介绍基于Xmpp,Openfire和Asmack的聊天软件的开发(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近在学习基于Xmpp的android通信软件,现将一些关键的环节分享记录在这里。

在Openfire服务器端配置好后,开始开发android客户端。

(有关Openfire服务器的搭建,可以参考Openfire 的安装和配置)

整体框架:


android客户端通过smack与openfire服务器进行通信,从而实现客户端之间的通信功能。Asmack为smack在android环境下的jar包。


第一步,要建立客户端到服务器的连接。


若想实现即时通信的功能,必须要能够实时的从服务器获取信息,那么就要能够使得客户端与服务器保持长时间的连接,在asmack中,提供了一个XMPPConnection类来实现与服务器保持长连接的功能。

具体实现如下:

private static XMPPConnection con = null;private static void openConnection() {try {ConnectionConfiguration connConfig = new ConnectionConfiguration("10.105.74.254", 5222);//服务器地址,端口号con = new XMPPConnection(connConfig);con.connect();//开启连接}catch (XMPPException xe){xe.printStackTrace();}}

XMPPConnection有两个非常重要的函数:

xmppConnection.isConnected() :布尔值表示是否连接到服务器(注意:此时用户不一定登录);

xmppConnection.isAuthenticated() : 布尔值表示是否登录成功(即用户名+密码验证通过),此时代表已登录成功,且与服务器保持连接。

通过这两个函数,就可以知道连接是否成功,登录是否成功。



第二步,用户登录

	XmppTool.getConnection().login(Userid, passwd);//登录(用户名+密码)
	Presence presence = new Presence(Presence.Type.available);//状态为在线XmppTool.getConnection().sendPacket(presence);

Presence类位于 org.jivesoftware.smack.packet.Presence中。

Presence主要用来设置用户状态(在线,离线),发出添加和删除好友的信息。由Presence中的Presence.Type属性实现,具体含义如下:

  • available: 表示处于在线状态
  • unavailable: 表示处于离线状态
  • subscribe: 表示发出添加好友的申请
  • unsubscribe: 表示发出删除好友的申请
  • unsubscribed: 表示拒绝添加对方为好友
  • error: 表示presence信息报中包含了一个错误消息。


有关连接与登录的关键功能已经实现,之后便是相应的UI的设计,以及UI和服务的关联。就不在这里赘述了。


下一步,我将会实现好友列表的获取,以及发送消息,接收消息功能。





这篇关于基于Xmpp,Openfire和Asmack的聊天软件的开发(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/771516

相关文章

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹