先说说XIFF的进展,igniterealtime.org 自从2007-3-3删除XIFF2后,一直在进行XIFF3的开发,现在每天都有更新,进展看似顺利。而且有了个3.4.2版本,这篇文章中用的就是这个xiff的3.4.2版本.
使用 Openfire 3.4.3 版本
1.登录
var _conn : XMPPSocketConnection; _conn.server = Server Name; _conn.username = Username; _conn.password = Password; _conn.connect("standard");
连接成功会触发 ConnectionSuccessEvent.CONNECT_SUCCESS
登录成功会触发 LoginEvent.LOGIN
2.处理Roster
var _roster = new Roster(); _roster.connection = _conn;
Roster需要监听的几个重要event
RosterEvent.SUBSCRIPTION_REQUEST 当别人要加你为好友时
RosterEvent.USER_UPDATED 当你的好友更新了状态时
添加一个联系人
_roster.grantSubscription(联系人JID, true);
拒绝别人添加好友的请求
_roster.denySubscription(请求人JID);
3.Message处理
需要监听 _conn.addEventListener(MessageEvent.MESSAGE, messageHandler);
当收到消息时触发 MessageEvent.MESSAGE
var m:Message = event.data as Message;
m.from 消息发送者
m.body 消息内容
m.type 消息类型 (Message.CHAT_TYPE, Message.GROUPCHAT_TYPE, Message.ERROR_TYPE 等)
发送消息
var message : Message = new Message(联系人JID, null, null, null, Message.CHAT_TYPE, null); message.from = 发信人JID; message.body = 消息内容 //message.htmlBody = _conn.send(message);
4.注册用户
创建一个用户
var regdata : Object = {}; regdata.username = 用户名 regdata.password = 密码 regdata.email = 邮箱 _conn.sendRegistrationFields( regdata, null );
_conn需要监听 RegistrationSuccessEvent.REGISTRATION_SUCCESS, 当注册成功时触发.
5.Cross Domain
openfire的管理平台中写着: 端口5229 Flash Cross Domain
Security.loadPolicyFile("xmlsocket://Servername:5229");
openfire的crossdomain.xml是动态生成的,可以telnet看一下,在命令行中运行
telnet localhost 5229
会看到下面的内容
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="*" to-ports="5222" /> </cross-domain-policy>
6.尚待解决的问题
xiff现在还没实现XEP-0124
xiff直接连GTalk有问题(talk.google.com:5222)
参考
xiff 3.4.2
http://svn.igniterealtime.org/svn/repos/xiff/tags/xiff_3_4_2
xiff 3 API
http://paazio.wippiespace.com/xiff3doc/
中文翻译计划
http://wiki.jabbercn.org/space/start
Flex 2 with XIFF
http://www.darkcoding.net/software/xmpp-in-your-browser-flex-2-with-xiff/
XIFF ActionScript 3.0 Demo
http://www.velloff.com/?p=38