Smack API

必要条件

Smack的唯一必要条件是JDK 1.2 或更高版本 1 。smack.jar文件已包含一个XML解析器,不需要其它第三方类库。

1 JDK 1.2 and 1.3 用户如果想使用SSL连接则classpath在中必须存在JSSE类库。

建立连接

XMPPConnection 类用来建立到XMPP服务器的连接。要建立SSL连接,要使用SSLXMPPConnection类。下面是建立连接的例子:

// 建立一个到jabber.org服务器的连接。
XMPPConnection conn1 = new XMPPConnection("jabber.org");

// 通过一个特殊的端口建立一个到jabber.org服务器的连接。
XMPPConnection conn2 = new XMPPConnection("jabber.org", 5222);

// 建立一个到jabber.org服务器的SSL连接。
XMPPConnection connection = new SSLXMPPConnection("jabber.org"); 

一旦您建立了一个连接,您必须通过方法XMPPConnection.login(String username, String password)使用用户名和密码登陆。如果登陆成功,您可以通过创建新的Chat或GroupChat对象和其它用户聊天。

操作Roster

Roster能够让您跟踪其它用户的有效性(存在)。您可以通过使用像“朋友”和“同事”这样的组来组织用户,这样您可以发现每个用户是否在线。

使用XMPPConnection.getRoster()这个方法得到Roster。通过Roster类您可以找到所有Roster登陆、他们所属的组以及每个登陆当前的存在状态。

读写Packet

从客户端以XML格式发送到XMPP服务器的每个消息被称为一个“packet”。 org.jivesoftware.smack.packet 包中包含了一些类,这些类封装了XMPP所允许的三个不同的基本packet类型(message, presence, 和 IQ)。 像Chat和GroupChat这样的类提供了更高类别的构造能够自动地创建和发送packet,但是您也可以直接创建和发送packet。 下面是一个通过改变您的presence来让别人知道您已无效,已经"out fishing"了:

// 创建一个新的presence. 传入false以指示我们已经无效了
Presence presence = new Presence(Presence.Type.UNAVAILABLE);
presence.setStatus("Gone fishing");
// 发送packet (假设已经有了一个名为"con"的XMPPConnection实例).
con.sendPacket(presence);

Smack提供两种方法读取收到的packet:PacketListener[packet监听器]PacketCollector[packet收集器]。 二者都是使用PacketFilter实例来决定哪个packet应该被处理。packet监听器用于事件样式的编程,而packet收集器有一个可以做轮询和阻塞操作的packet的结果队列。所以,当您想对一个有可能随时到来的packet采取一些操作时,使用packet监听器;而当您想等待一个特别的packet到来时,使用packet收集器。您可以使用XMPPConnection实例创建packet收集器和监听器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值