XMPP客户端开发包 SmackAPI

webphp 12年前
     <p>Smack是一个用于和XMPP服务器通信的类库,由此可以实现即时通讯和聊天。 </p>    <p>Smack主要优势 </p>    <p>非常简单易用,并且有十分强大的 API。只需三行代码就可以向用户发关文本消息: </p>    <pre class="brush:java; toolbar: true; auto-links: false;">XMPPConnection connection = new XMPPConnection("jabber.org");  connection.login("mtucker", "password");  connection.createChat("jsmith@jivesoftware.com").sendMessage("Howdy!");</pre>    <br />    <p>不像其它类库那样强制您进行包级别的编码。Smack提供智能的更高级的构造,像 Chat和GroupChat类,让您进行高效的编程。 </p>    <p>不需用您熟悉XMPP XML格式,即使您熟悉 XML. </p>    <p>提供简单的设计以进行通讯,Smack允许您在每个消息中设置任意数量的属性,包括java对象。</p>    <p>Apache许可下的开源类库,这意味着您可以将Smack整合进您的商业或非商业的应用中。 </p>    <p>关于 XMPP </p>    <p>XMPP (eXtensible Messaging and Presence Protocol)是一个由Jabber Software Foundation (http://www.jabber.org)领导的开放的基于XML的协议,并且获得了 IETF的批准。 </p>    <p>怎样使用该文档</p>    <p>在使用该文档时假设您已经了解XMPP即时通讯的主要特征。在您阅读该文档的同时强烈建议您打开 Javadoc API 帮助文档作为参考。 </p>    <p>这个文档将会向您介绍Smack API,并且简要介绍一些重要的类和概念。</p>    <p>必要条件</p>    <p>Smack的唯一必要条件是JDK 1.2 或更高版本1。smack.jar文件已包含一个XML解析器,不需要其它第三方类库。 </p>    <p>1 JDK 1.2 and 1.3 用户如果想使用SSL连接则classpath在中必须存在JSSE类库。 </p>    <p>建立连接</p>    <p>XMPPConnection类用来建立到XMPP服务器的连接。要建立SSL连接,要使用SSLXMPPConnection类。下面是建立连接的例子: </p>    <pre class="brush:java; toolbar: true; auto-links: false;">// 建立一个到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"); </pre>    <p>一旦您建立了一个连接,您必须通过方法XMPPConnection.login(String username, String password)使用用户名和密码登陆。如果登陆成功,您可以通过创建新的Chat或GroupChat对象和其它用户聊天。 </p>    <p>操作Roster </p>    <p>Roster能够让您跟踪其它用户的有效性(存在)。您可以通过使用像“朋友”和“同事”这样的组来组织用户,这样您可以发现每个用户是否在线。 </p>    <p>使用XMPPConnection.getRoster()这个方法得到Roster。通过Roster类您可以找到所有Roster登陆、他们所属的组以及每个登陆当前的存在状态。 </p>    <p>读写Packet </p>    <p>从客户端以XML格式发送到XMPP服务器的每个消息被称为一个“packet”。org.jivesoftware.smack.packet包中包含了一些类,这些类封装了XMPP所允许的三个不同的基本packet类型(message, presence, 和 IQ)。 像Chat和GroupChat这样的类提供了更高类别的构造能够自动地创建和发送packet,但是您也可以直接创建和发送packet。 下面是一个通过改变您的presence来让别人知道您已无效,已经"out fishing"了: </p>    <pre class="brush:java; toolbar: true; auto-links: false;">// 创建一个新的presence. 传入false以指示我们已经无效了  Presence presence = new Presence(Presence.Type.UNAVAILABLE);  presence.setStatus("Gone fishing");  // 发送packet (假设已经有了一个名为"con"的XMPPConnection实例).  con.sendPacket(presence);</pre>    <p>Smack 提供两种方法读取收到的packet:PacketListener[packet监听器]和PacketCollector[packet收集器]。 二者都是使用PacketFilter实例来决定哪个packet应该被处理。packet监听器用于事件样式的编程,而packet收集器有一个可以做轮询和阻塞操作的packet的结果队列。所以,当您想对一个有可能随时到来的packet采取一些操作时,使用packet监听器;而当您想等待一个特别的packet到来时,使用packet收集器。您可以使用XMPPConnection实例创建packet收集器和监听器。<br /> <br /> </p>    <p><strong>项目主页:</strong><a href="http://www.open-open.com/lib/view/home/1326015960796" target="_blank">http://www.open-open.com/lib/view/home/1326015960796</a></p>