最近考虑结合Flash的Socket和AMF3来实现聊天室功能,Socket比起原来的XMLSocket来说,增加了可传递二进制数据,而AMF3 则可以封装很多类型的数据,并且从flash player 9以后flash可以直接读取数据,这样的话,就可以大大提升数据通信效率,我这边同时利用ByteArray的数据压缩解压功能,可以对原来数据进行再 次压缩,相对没有压缩的AMF3数据则又可以提升几倍效率,对于大文本数据的效果更为显著。
ByteArray的压缩格式其实就是zlib算法,Java类包里就是Java.util.zip.*包,服务端数据就可以直接进行压缩解压了!
我在网上又找到了一个功能和扩展性都很好的项目-apache mina (http://mina.apache.org/ ),再给合AMF3就可以很容易实现支持AMF3的Socket服务程序。
我目前阶段可以实现简单的聊天功能:
客户端有关压缩和解压的代码
- /*
- ...
- */
- //发送代码;
- var bytes:ByteArray = new ByteArray();
- bytes.writeObject( { event:"send" , message:input.text } );
- input.text = "" ;
- bytes.compress();
- socket.writeBytes(bytes);
- socket.flush();
- /*
- ...
- */
- //接收代码;
- var bytes:ByteArray = new ByteArray();
- socket.readBytes(bytes);
- bytes.uncompress();
- var object:Object = bytes.readObject();