[AS3]as3利用socket模拟http链接来突破调用限制
原理就是利用socket模拟一个http链接来突破flash player的各种限制,由于是socket连接,所以跨域问题大家还是要好好注意下的,比如原先urlrequest中不能自定义的referer之类的。
最近的工作中频繁用到HTTPCLIENT这个类
先放上github的项目地址 https://github.com/gabriel/as3httpclient
原理就是利用socket模拟一个http链接来突破flash player的各种限制,由于是socket连接,所以跨域问题大家还是要好好注意下的,比如原先urlrequest中不能自定义的referer之类的。
还有一个妙处就是原先的netstream是不能读取到流的数据,有时候在流里会藏一些数据,这时候就用到这个类来解决了,这源码是搜索的时候翻到的国外技术,因为原链接已经流失。我只好在这里标明我是转载了 =。-
- private var ns:NetStream;
- private var video:Video;
- private var meta:Object;
- private var client:HttpClient;
- private var filesize:Number = 0;
- private var loadedBytes:Number = 0;
- private var data:ByteArray = new ByteArray();
- private var datadelta:Number = 1024*1024;
- private var file:String = "http://your_video_web_url/example.flv";
- private function init():void{
- var nsClient: Object = {};
- nsClient.onMetaData = metaDataHandler;
- var nc:NetConnection = new NetConnection();
- nc.connect(null);
- ns = new NetStream(nc);
- ns.client = nsClient;
- ns.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler);
- ns.addEventListener(IOErrorEvent.IO_ERROR,nsIOErrorHandler);
- video = new Video();
- video.attachNetStream(ns);
- video.smoothing = true;
- uic.addChild(video);
- client = new HttpClient();
- loadData();
- ns.play(null);
- }
- private function loadData():void{
- var uri:URI = new URI(file);
- var request:HttpRequest = new Get();
- var maxdata:Number = loadedBytes+datadelta;
- if (maxdata>=filesize and filesize>0){
- request.addHeader('Range','bytes='+loadedBytes+'-');
- } else {
- request.addHeader('Range','bytes='+loadedBytes+'-'+maxdata);
- }
- client.listener.onData = function(e:HttpDataEvent):void
- {
- var bytes:ByteArray = new ByteArray();
- bytes = e.bytes;
- bytes.position = 0;
- data.writeBytes(bytes);
- };
- client.listener.onComplete = function(e:HttpResponseEvent ):void{
- loadedBytes+=data.length;
- filesize = Number(e.response.header.getValue('Content-Length'))/1024;
- ns.appendBytes(data);
- data.clear();
- inLoaded = false;
- };
- client.request(uri,request);
- }
[AS3]as3利用socket模拟http链接来突破调用限制
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...