本文主要是介绍基于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的聊天软件的开发(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!