学习 Smack(一)

学习 Smack(一)

Smack是一个用于和XMPP服务器通信的类库,由此可以实现即时通讯和聊天,Android 上对于Asmck的实现是Asmck,Asmack是一个完整的对于XMPP API的实现,而Asmack是smack Android 上的构建版本,该资源并不包含太多的代码,只是一个构建的环境,开发者可以利用该API基于XMPP协议的即时通信开发

Smack的优势:
1.非常简单易用,并且有强大API实现,只需要三行代码即可向用户发送文本消息
XMPPConnection connection = new XMPPConnection("jabber.org");
connection.login("mtucker", "password");
connection.createChat("jsmith@jivesoftware.com").sendMessage("Howdy!");

2.不像其他的类库强制进行包级别的编码,Smack提供智能更加高级的构造,像Chat GroupChart  类,可以更加高效的编程

3.不需要你熟悉XMPP XML格式,即使您熟悉XML

 4.提供简单的设计以进行通信,Smack允许您在每个消息中设置任意数量的属性,包括Java对象

 5.Apache许可下的开源类库,这意味着你可以将Smack整合到商业应用或者非商业应用

Smack源码中的部分类:
Smack的唯一条件是JDK1.2版本或者以上,Smack.jar已经包含了一个XML解析器,不需要第三方的类库
JDK1.2或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)方式登陆到Xmpp服务器,如果登陆成功则可以通过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让别人知道你已经无效
// 创建一个新的presence. 传入false以指示我们已经无效了
Presence presence = new Presence(Presence.Type.UNAVAILABLE);
presence.setStatus("Gone fishing");
// 发送packet (假设已经有了一个名为"con"的XMPPConnection实例).
con.sendPacket(presence);

Smack提供两种方式用来读取packet,packageListener[packet监听器] 与packetCollector(packet收集器)二者都是用packetFilter实例来决定哪个packet实例需要应该被处理,packetListener用于事件性的编程,而packet收集器有一个可以用做轮询的阻塞队列,所以当想对一个有可能随时到来的packet采取一些操作的时候,可以使用packet监听器,当你想等待一个特别的packet到来,使用packet收集器,你可以使用XmppMananger创建一个packet监听器或者是收集器



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值