2016-10-09 09:13:36 +02:00
<!DOCTYPE html>
< html >
2016-10-22 15:39:16 +02:00
< head >
< title > Speedtest< / title >
< style type = "text/css" >
html , body {
margin : 0 ;
padding : 0 ;
border : none ;
text-align : center ;
}
div . test {
display : inline-block ;
2017-03-02 17:58:40 +01:00
margin : 1 em ;
2016-10-22 15:39:16 +02:00
text-align : center ;
}
div . testName , div . meterUnit {
font-size : 3 vw ;
}
div . meter {
font-size : 6 vw ;
line-height : 1.5 em ;
height : 1.5 em !important ;
}
. flash {
animation : flash 0.6 s linear infinite ;
}
@ keyframes flash {
0 % { opacity : 0.6 ; }
50 % { opacity : 1 ; }
}
2016-10-09 09:13:36 +02:00
2016-10-22 15:39:16 +02:00
< / style >
< / head >
< body >
< h1 > Speedtest< / h1 >
< div class = "test" >
< div class = "testName" > Download< / div >
< div class = "meter" > < span id = "download" > < / span > < / div >
< div class = "meterUnit" > Mbit/s< / div >
< / div >
< div class = "test" >
< div class = "testName" > Upload< / div >
< div class = "meter" > < span id = "upload" > < / span > < / div >
< div class = "meterUnit" > Mbit/s< / div >
< / div >
< div class = "test" >
< div class = "testName" > Latency< / div >
< div class = "meter" > < span id = "ping" > < / span > < / div >
< div class = "meterUnit" > ms< / div >
2017-03-02 17:58:40 +01:00
< / div >
< div class = "test" >
< div class = "testName" > Jitter< / div >
< div class = "meter" > < span id = "jitter" > < / span > < / div >
< div class = "meterUnit" > ms< / div >
2016-10-22 15:39:16 +02:00
< / div >
2017-02-26 12:15:51 +01:00
< div id = "ip" > < / div >
2016-10-22 15:39:16 +02:00
< script type = "text/javascript" >
2017-03-02 17:58:40 +01:00
var w = new Worker ( "speedtest_worker.min.js" ) ;
2016-10-22 15:39:16 +02:00
var interval = setInterval ( function ( ) { w . postMessage ( "status" ) ; } . bind ( this ) , 100 ) ;
w . onmessage = function ( event ) {
var data = event . data . split ( ";" ) ;
var status = Number ( data [ 0 ] ) ;
2017-03-02 17:58:40 +01:00
var dl = document . getElementById ( "download" ) , ul = document . getElementById ( "upload" ) , ping = document . getElementById ( "ping" ) , ip = document . getElementById ( "ip" ) , jitter = document . getElementById ( "jitter" ) ;
dl . className = status == 1 ? "flash" : "" ; ping . className = status == 2 ? "flash" : "" ; jitter . className = ul . className = status == 3 ? "flash" : "" ;
2016-10-22 15:39:16 +02:00
if ( status >= 4 ) {
clearInterval ( interval ) ;
}
dl . innerHTML = data [ 1 ] ;
ul . innerHTML = data [ 2 ] ;
ping . innerHTML = data [ 3 ] ;
2017-03-02 17:58:40 +01:00
jitter . innerHTML = data [ 5 ] ;
2017-02-26 12:15:51 +01:00
ip . innerHTML = "Your IP: " + data [ 4 ] ;
2016-10-22 15:39:16 +02:00
} . bind ( this ) ;
2016-10-23 19:47:55 +02:00
w . postMessage ( 'start {"url_dl":"garbage.php","url_ul":"empty.dat","url_ping":"empty.dat","time_dl":"10","time_ul":"15","count_ping":"30"}' ) ; //start with custom parameters. paths are relative to js file. you can omit parameters that you don't want to change
2016-10-22 15:39:16 +02:00
< / script >
< / body >
2016-10-09 09:13:36 +02:00
< / html >