You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
3.0 KiB
121 lines
3.0 KiB
<html>
|
|
<head>
|
|
<title>Websocket test</title>
|
|
</head>
|
|
|
|
<body>
|
|
<h1>Websocket Test</h1>
|
|
<div id="wstest">Websockets are not supported</div>
|
|
<div id="data">Server time</div>
|
|
|
|
<script language="Javascript">
|
|
/* <![CDATA[ */
|
|
var wstest = document.getElementById('wstest').firstChild;
|
|
var data = document.getElementById('data');
|
|
|
|
var current_time = null;
|
|
var recv_date = null;
|
|
var recv_at = null;
|
|
|
|
function isLittleEndian() {
|
|
var a = new ArrayBuffer(4);
|
|
var b = new Uint8Array(a);
|
|
var c = new Uint32Array(a);
|
|
b[0] = 0xa1;
|
|
b[1] = 0xb2;
|
|
b[2] = 0xc3;
|
|
b[3] = 0xd4;
|
|
return c[0] == 0xd4c3b2a1;
|
|
}
|
|
|
|
function swap_first(view) {
|
|
var tmp = view[0];
|
|
view[0] = view[1];
|
|
view[1] = tmp;
|
|
}
|
|
|
|
function ntohs(byteBuffer) {
|
|
if (isLittleEndian()) {
|
|
swap_first(byteBuffer);
|
|
}
|
|
}
|
|
|
|
function ntohl(shortBuffer) {
|
|
if (isLittleEndian()) {
|
|
swap_first(shortBuffer);
|
|
swap_first(new Uint8Array(shortBuffer.buffer, 0, 2));
|
|
swap_first(new Uint8Array(shortBuffer.buffer, 2, 2));
|
|
}
|
|
}
|
|
|
|
function ntohll(longBuffer) {
|
|
if (isLittleEndian()) {
|
|
swap_first(longBuffer);
|
|
swap_first(new Uint16Array(longBuffer.buffer, 0, 2));
|
|
swap_first(new Uint16Array(longBuffer.buffer, 4, 2));
|
|
swap_first(new Uint8Array(longBuffer.buffer, 0, 2));
|
|
swap_first(new Uint8Array(longBuffer.buffer, 2, 2));
|
|
swap_first(new Uint8Array(longBuffer.buffer, 4, 2));
|
|
swap_first(new Uint8Array(longBuffer.buffer, 6, 2));
|
|
}
|
|
}
|
|
|
|
function updateData() {
|
|
while (data.lastChild) {
|
|
data.removeChild(data.lastChild);
|
|
}
|
|
data.appendChild(
|
|
document.createTextNode(current_time.toISOString()));
|
|
data.appendChild(
|
|
document.createElement('br'));
|
|
data.appendChild(
|
|
document.createTextNode(current_time.toUTCString()));
|
|
data.appendChild(
|
|
document.createElement('br'));
|
|
data.appendChild(
|
|
document.createTextNode(current_time.toLocaleString()));
|
|
}
|
|
|
|
if ('WebSocket' in window){
|
|
var interval = null
|
|
|
|
wstest.data = 'Websockets are supported';
|
|
connection = new WebSocket('ws://172.27.1.139:8080/');
|
|
console.log('Websockets test');
|
|
|
|
connection.onopen = function() {
|
|
interval = setInterval(
|
|
function() {
|
|
if(current_time) {
|
|
current_time = new Date(recv_date.getTime() + (new Date().getTime() - recv_at));
|
|
updateData();
|
|
}
|
|
}, 1);
|
|
}
|
|
|
|
connection.onclose = function() {
|
|
window.clearInterval(interval)
|
|
}
|
|
|
|
connection.onmessage = function(e){
|
|
var reader = new FileReader();
|
|
reader.addEventListener("loadend", function() {
|
|
ntohll(new Uint32Array(reader.result, 0, 2))
|
|
current_time = recv_date = new Date(Math.round(
|
|
new Float64Array(reader.result)[0] * 1000))
|
|
recv_at = new Date().getTime();
|
|
});
|
|
reader.readAsArrayBuffer(e.data);
|
|
}
|
|
|
|
connection.onerror = function(e){
|
|
window.clearInterval(interval)
|
|
console.log(e.data);
|
|
}
|
|
}/* ]]> */
|
|
</script>
|
|
<object data="http://{{ ip }}:{{ port }}/ldap" type="image/svg+xml" class="mailicon">
|
|
</object>
|
|
</body>
|
|
</html>
|
|
<!-- vim: set ts=4 sw=4: -->
|