基于Xmpp,Openfire和Asmack的聊天软件的开发(一)
16lz
2021-01-23
最近在学习基于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和服务的关联。就不在这里赘述了。
下一步,我将会实现好友列表的获取,以及发送消息,接收消息功能。
更多相关文章
- Android 实现答题器功能(通过手势实现翻页效果)
- 最全的Android项目结构以及功能
- Android 客户端与服务器交互方式
- 从零搭建 repo 服务器
- Android 实现文件上传功能(upload)
- Android截图功能实现
- Android仿人人客户端(v5.7.1)——个人主页(二)
- android应用中去android市场去评分的功能实现(吐槽一波个人应用上
- Android新手入门2016(6)--客户端编程思想的初步思考和Android学习