首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

XMPP的客户端联接实例

2012-09-04 
XMPP的客户端连接实例万事都不能从零开始,XMPP规范就象webServece规范一样.我们最后选用一个库来加速开发.

XMPP的客户端连接实例
万事都不能从零开始,XMPP规范就象webServece规范一样.我们最后选用一个库来加速开发.所以我们选择使用Smack因为它容易使用,设计合理,还记得我们的经典jive吗,它也是他们开发的,应该还是比较不错的. 注意是apache的licence,也就是可以应用到你的商业程序中.下载地址:http://www.jivesoftware.org/使用简单,你不需要精通xmpp协议(这加快我们入门,从例子开始我们跟容易理解),创建一个xmpp连接,并向一个用户发送信息,只需要三行代码:XMPPConnection connection = new XMPPConnection("jabber.org");
connection.login("mtucker", "password");
connection.createChat("jsmith@jivesoftware.com").sendMessage("Howdy!");因为是tcp协议,首先必须创建一个网络连接:XMPPConnection 就是用来创建和xmpp服务器的连接的类,如果需要ssl就使用SSLXMPPConnection.

// 创建连接.XMPPConnection conn1 = new XMPPConnection("jabber.org");// 指定端口XMPPConnection conn2 = new XMPPConnection("jabber.org", 5222);// 创建ssl连接.XMPPConnection connection = new SSLXMPPConnection("jabber.org");
一旦你创建了连接,你需要使用用户名和密码来登陆,你可以使用XMPPConnection.login(String username, String password) 方法.一旦你完成登陆了,你可以通过创建新的Chat或者是GroupChat对象来和其它人聊天.
操作 名册
名册让你能够跟踪其它在线的用户,用户可以被组织成为组,例如好友,同事,并且你可以发现谁在线,谁不在线.你可以使用 XMPPConnection.getRoster() 方法来取得好友名单,得到roster类.roster类允许你查找名册实体,比如他们属于那个组,和当前的状态.
读写数据包
没一个从客户端发送到xmpp服务器的包都是xml格式的文本.org.jivesoftware.smack.packet 保护了封装三种xmpp级别包:message,presence,IQ.Chat类和GroupChat类提供了高级别的类管理包自动的生成和发送,但是你也可以手动创建它们.下面例子演示了改变你的在线情况,告诉其它人你不在线"外出捕鱼"去了.
//用presence.Type.UNAVILABLE作为参数创建一个presence描述你不在线.Presence presence = new Presence(Presence.Type.UNAVAILABLE);presence.setStatus("Gone fishing");// 发送该包.con.sendPacket(presence);

Smack 提供了两种方式来读取包:
PacketListener,和 PacketCollector.
它们都使用PacketFilter实例来决定那些包需要处理.一个PacketListener使用事件风格的编程,packet collector 提供轮循和阻塞的操作.因此,packet listener用来处理随即发送来的包,packet collector用来等待指定的包.Packet collectors and listeners使用XMPPConnection 对象来创建实例.

热点排行