Smack文档二:Smack入门


本文将介绍Smack API 并对主要的类和概念进行描述。


JAR文件 依赖


Smack很容易集成到已有的基于JDK1.5及更高版本的Java应用中。它几乎不依赖其他包(除了 Jingle 语音聊天功能)并且进行了优化,是包尽可能的小。类库被分成几个包,可根据应用需求进行选择,更具灵活性:

  • smack.jar -- 提供XMPP核心功能,是唯一所必需的库。所有的XMPP特性,包括XMPP RFCs需要的所有特性。 
  • smackx.jar -- 支持XMPP标准基金会定义的多种扩展(XEPs),包括多用户聊天,文件传输,用户搜索等。这些都在扩展说明中介绍。( extensions manual
  • smackx-debug.jar -- 增强协议通信GUI调试器。它在classpath中或者调试是,他将自动开启。

建立一个连接

XMPPConnection类被用于和XMPP服务器创建链接。下面的代码展示了如何创建一个连接:

// Create a connection to the jabber.org server.
Connection conn1 = new XMPPConnection("jabber.org");
conn1.connect();

// Create a connection to the jabber.org server on a specific port.
ConnectionConfiguration config = new ConnectionConfiguration("jabber.org", 5222);
Connection conn2 = new XMPPConnection(config);
conn2.connect();

需要注意的是,当使用默认参数(如果可能)连接服务器是将使用最高安全级别,包括使用TLS加密连接。 ConnectionConfiguration类对连接的创建有较高级的控制,例如禁用或需要加密。请参阅连接管理( Connection Management)的全部细节。

一旦你创建了连接,你应该Connection.login(String username, String password)方法使用用户名和密码登录。你登录后就可以创建新的Chat 或者 GroupChat 对象,和别人聊天。



使用Roster

Roster用来了解其他用户的状态,用户可以进行分组例如“好友”或者“同事”,同时可以看到其他用户是否在线。

名册让您跟踪其他用户的可用性(存在)。用户可以组织成团体,如“朋友”和“同事”,然后你会发现每个用户是否在线或离线。
可以通过Connection.getRoster()方法获取Roster。Roster类名可以然你获取所有的Roster成员,分组归属和成员状态。


读写数据包

每一条从客户端发往数据库的信息就叫做数据包,使用XML格式。org.jivesoftware.smack.packet 包中包含三种XMPP支持的基础数据包类型封装类。 Chat 和 GroupChat类提供自动创建和发送数据包的高级结构的支持,但是也可以自己创建和发送数据包。下面的代买就展示了如何改变你的状态,让其他人知道你现在不在和“"out fishing"。


// Create a new presence. Pass in false to indicate we're unavailable.
Presence presence = new Presence(Presence.Type.unavailable);
presence.setStatus("Gone fishing");
// Send the packet (assume we have a Connection instance called "con").
con.sendPacket(presence);

Smack有两种方式读取收到的数据包PacketListenerPacketCollector。都是使用PacketFilter实例来确定应该处理哪个信息。数据包监听器监听事件,同时数据包控制器位置一个数据包队列,你既可以做轮询也可以堵塞。如果你想在数据包到达时做些什么,那么数据包监听器就很有用,而入股当你向等待一个特别的数据包,控制器就能派上用场。 数据包监听器和控制器可以使用Connection实例创建。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值