github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/themes/wind/static/libs/sockjs-client-1.1.0/tests/html/smoke-latency.html (about) 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 5 <meta charset="UTF-8" /> 6 7 <link href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAAF0lEQVRIx2NgGAWjYBSMglEwCkbBSAcACBAAAeaR9cIAAAAASUVORK5CYII=" rel="icon" type="image/x-icon" /> 8 9 <script type="text/javascript" src="lib/sockjs.js"></script> 10 <script type="text/javascript" src="static/jquery.min.js"></script> 11 12 <script type="text/javascript" src="config.js"></script> 13 </head> 14 <body> 15 <form> 16 <input type="text" id="url" size="40"> 17 <br /> 18 <select id="transport"> 19 <option value="">- any - </option> 20 <option value="websocket">websocket</option> 21 <option value="xdr-streaming">xdr-streaming</option> 22 <option value="xhr-streaming">xhr-streaming</option> 23 <option value="eventsource">eventsource</option> 24 <option value="iframe-eventsource">iframe-eventsource</option> 25 <option value="htmlfile">htmlfile</option> 26 <option value="iframe-htmlfile">iframe-htmlfile</option> 27 <option value="xdr-polling">xdr-polling</option> 28 <option value="xhr-polling">xhr-polling</option> 29 <option value="iframe-xhr-polling">iframe-xhr-polling</option> 30 <option value="jsonp-polling">jsonp-polling</option> 31 </select> 32 <input type="checkbox" id="sameOrigin" checked>Same Origin? 33 <input type="button" value="Connect" id="connect"> 34 <input type="button" value="Disconnect" id="disconnect" disabled="yes"> 35 </form> 36 37 Latency: <code id="latency"></code><br> 38 <code id="logs" style="height:200px; overflow:auto; display: block; border: 1px gray solid;"> 39 </code> 40 41 <script> 42 function log(a) { 43 if ('console' in window && 'log' in window.console) { 44 console.log(a); 45 } 46 $('#logs').append($("<code>").text(a)); 47 $('#logs').append($("<br>")); 48 $('#logs').scrollTop($('#logs').scrollTop()+10000); 49 } 50 51 var sjs; 52 function onopen() { 53 log('connected ' + sjs.transport); 54 $('#sameOrigin').attr('disabled', true); 55 send(); 56 }; 57 function onclose(e) { 58 log('disconnected ' + e.code + ', ' + e.reason); 59 $('#connect').each(function(_,e){e.disabled='';}); 60 $('#disconnect').attr('disabled', true); 61 $('#sameOrigin').attr('disabled', false); 62 }; 63 function send() { 64 sjs.send(JSON.stringify({t: (new Date()).getTime()})); 65 }; 66 var i = 0; 67 function xonmessage(e) { 68 var msg = JSON.parse(e.data); 69 var td = (new Date()).getTime() - msg.t; 70 $('#latency').text(''+i +' ' + td + ' ms'); 71 i += 1; 72 send(); 73 }; 74 75 $('#connect').click(function() { 76 $('#connect').attr('disabled', true); 77 $('#disconnect').each(function(_,e){e.disabled='';}); 78 var transport = $('#transport').val() || undefined; 79 log('[connecting] ' + transport); 80 var url; 81 if ($('#url').val()) { 82 url = $('#url').val(); 83 } else if ($('#sameOrigin').prop('checked')) { 84 if (window.location.origin) url = window.location.origin; 85 else { 86 url = window.location.protocol + '//' + window.location.hostname + 87 (window.location.port ? ':' + window.location.port : ''); 88 } 89 url += '/echo'; 90 } else { 91 url = clientOptions.url + '/echo'; 92 } 93 sjs = new SockJS(url, null, { transports: transport }); 94 sjs.onopen = onopen 95 sjs.onclose = onclose; 96 sjs.onmessage = xonmessage; 97 }); 98 $('#disconnect').click(function() { 99 $('#disconnect').attr('disabled', true); 100 log('[disconnecting]'); 101 sjs.close(); 102 }); 103 </script> 104 </body> 105 </html>