2010年6月19日星期六

2010/2/25 Smack 简介和调试

Smack 库是java的 xmpp 客户端库,用来和 xmpp server 端通信,类似于Java MSN Messenger Library (JML)相对于 MSN 协议。是一个高层概念的功能支持库,简单易用,不需要在Packet层面编程(但也支持Packet层面编程),不需要你熟悉XMPP的xml格式。支持单人和多人对话。

由3个包构成:
smack.jar 仅用来支持xmpp核心协议
smackx.jar 支持扩展协议,workgroup等概念的支持都在这个包里
smackx-debug.jar 提供一个图形环境的调试器,可以观察所有进出的数据包。如果在classpath中包含这个jar文件,并且启用了debug模式,那么smack自动弹出这个GUI调试窗口。所以想调试底层网络协议可以启用这个模式。不管是客户端还是服务器端调试,因为客户端和服务器端的数据流是一样的,只是方向相反而已。启用debug模式有两种:
1.api中启用:XMPPConnection.DEBUG_ENABLED = true;
2.java系统属性启用:java -Dsmack.debugEnabled=true SomeApp

一般的功能过程包括:
登录,建立连接,管理连接
发出对话,监听收到的对话,包括多人对话
花名册管理和状态管理,如好友的状态,自己的状态
支持同步和异步两种模式处理接收数据包,和包过滤器(Filter)功能
支持一种将java属性附加到xml数据包中的机制,也就是在xml的某个元素中增加一个xml属性(也就是键值对)
支持底层直接读写Packet
因为xmpp是可扩展的协议,所以smack本身也提供了Provider Architecture来支持使用者自定义的扩充。

没有评论: