root/trunk/as2/com/jeroenwijering/utils/BandwidthCheck.as @ 1

Revision 1, 2.0 kB (checked in by jeroen, 18 months ago)

initial commit of old repository into public one

  • Property svn:executable set to *
Line 
1/**
2* Check user bandwidth/connection speed over HTTP or RTMP.
3*
4* @example
5* var bwc = new BandwidthCheck("http://www.server.com/upload/100k.jpg");
6* bwc.onComplete = function(kbps) { trace(kbps); };
7*
8* @author       Brian Weil
9* @author       Stefan Richter
10* @author       Jeroen Wijering
11* @version      1.0
12**/
13
14
15class com.jeroenwijering.utils.BandwidthCheck {
16
17
18        /** MovieClipLoader instance **/
19        private var loader:MovieClipLoader;
20        /** NetConnection instance **/
21        private var connector:NetConnection;
22        /** MovieClip  instance **/
23        private var clip:MovieClip;
24        /** Start time of test **/
25        private var startTime:Number;
26
27
28        /** Constructor for the BandwidthCheck **/
29        function BandwidthCheck(fil:String) {
30                var ref = this;
31                if (fil.indexOf("rtmp") == -1) {
32                        loader = new MovieClipLoader;
33                        loader.addListener(this);
34                        clip = _root.createEmptyMovieClip("_bwchecker",1);
35                        loader.loadClip(fil + "?" + random(9999),clip);
36                } else {
37                        connector = new NetConnection();
38                        connector.onStatus = function(info) {
39                                if(info.code != "NetConnection.Connect.Success") {
40                                        ref.onComplete(0);
41                                }
42                        };
43                        connector.connect(fil, true);
44                        connector.onBWDone = function(kbps,dtd,dtt,lat) {
45                                ref.onComplete(kbps);
46                        };
47                        connector.onBWCheck = function() {};
48                }
49        };
50
51
52        /** event handler for finished loading **/
53        private function onLoadComplete(tgt:MovieClip,hts:Number) {
54                tgt._visible = false;
55                var dat = new Date();
56                var ttl = clip.getBytesTotal();
57                var sec = (dat.getTime() - startTime)/1000;
58                var klb = ttl * 0.0078125*0.93;
59                var kbps = Math.floor(klb/sec);
60                onComplete(kbps);
61                clip.removeMovieClip();
62        };
63
64
65        /** event handler for loading error **/
66        private function onLoadError(tgt:MovieClip,err:String,stt:Number) {
67                onComplete(0);
68        };
69
70
71        /** event handler for loading start **/
72        private function onLoadStart() {
73                var d = new Date();
74                startTime = d.getTime();
75        };
76
77
78        /** event handler for completed test **/
79        public function onComplete() {};
80
81
82}
Note: See TracBrowser for help on using the browser.