对Flash的Socket和AMF3的研究心得

来源:互联网 发布:c语言在线编译器中文 编辑:程序博客网 时间:2024/04/28 13:08

最近考虑结合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服务程序。
     我目前阶段可以实现简单的聊天功能:
/upload/amf3.jpg

客户端有关压缩和解压的代码

view plaincopy to clipboardprint?
  1. /* 
  2.          ... 
  3.          */  
  4.          //发送代码;  
  5. var bytes:ByteArray = new ByteArray();  
  6. bytes.writeObject( { event:"send", message:input.text } );  
  7. input.text = "";  
  8. bytes.compress();  
  9. socket.writeBytes(bytes);  
  10. socket.flush();  
  11.          /* 
  12.          ... 
  13.          */  
  14.          //接收代码;  
  15.          var bytes:ByteArray = new ByteArray();  
  16. socket.readBytes(bytes);  
  17. bytes.uncompress();  
  18. var object:Object = bytes.readObject();