对Flash的Socket和AMF3的研究心得

本文探讨了将Flash Socket与AMF3整合用于构建聊天室,通过增加二进制数据传递能力及AMF3的多类型数据封装,显著提升数据通信效率。文中介绍了使用ByteArray进行数据压缩解压,以及Apache Mina项目的应用,以实现支持AMF3的Socket服务。实现了简单聊天功能的客户端代码展示了压缩和解压过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近考虑结合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

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

  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(); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值