Smack:入门

这个文档将会想你介绍Smack API,并为重要的类和概念提供一个概览。

JAR文件和要求

Smack很容易嵌入到任何存在的JDK1.5或者更高版本的Java应用程序。它没有外部依赖(除了Jingle语音聊天功能)并且尽可能优化的更小。这个库有几个JAR文件,基于应用程序需要哪些特性灵活的提供:

  • smack.jar--提供核心XMPP功能,并且是唯一被要求的库。所有XMPP RFC包含的XMPP功能。

  • smackx.jar--支持XMPP标准基金会定义的许多扩展(XEPs),包含多用户聊天,文件传输,用户搜索,等。这个扩展在extensions manual中被记录。

  • smackx-debug.jar--一个增强的图形协议传输调试器。当在classpath被找到并且当启动debugging的时候它将自动使用。

建立一个连接

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)方法用用户名和密码登陆。一旦你登陆了,你可以通过创建一个新的Char或者GroupChat对象和其它用户聊天。

处理名单

名单让你跟踪其它用户的可用性(存在)。用户能被分组,例如"Friends"和"Co-workers",并且然后你发现是否每个用户在线或者不在线。

使用Connection.getRoster()方法获取名单。Roster类允许你找到所有名单实体,它们属于的群组,和每个实体的当前存在状态。

读和写Packet

每个从客户端发送给XMPP服务器的消息被称为packet,并且以XML发送。org.jivesoftware.smack.packet包包含封装XMPP支持的三个不同基本paket类型(message,presence,和IQ)的类。例如Chat类和GroupChat类提供了更高级的构造,自动管理创建和发送packet,但是你也能直接创建和发送packet。下面是一个代码示例用改变你的存在,让人们知道你不可用并且”下线“:

// 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提供了两种方式来读取接收的packet:PacketListener,和PacketCollector。并使用PacketFilter实例来确定哪个packet被处理。packet监听器是使用事件编程风格,然而packet Collector有一个packet结果队列,你能执行做轮训和阻塞操作。所以,packet listener当你想在packet 无论 什么时候接收的时候执行一些动作时非常有用,然而packet collector当你向等待一个指定的packt到达的时候非常有用。Packet collector和listener能使用一个Connection实例创建。

你可能感兴趣的:(Smack:入门)