<!DOCTYPE html>
< meta charset = "utf-8" / >
< head >
< meta name = "apple-mobile-web-app-capable" content = "yes" / >
< meta name = "viewport" content = "user-scalable=no, width=device-width" / >
< title > WebSocket Test< / title >
< style type = "text/css" >
body {
color: #fff;
background: #000;
font-size: 16pt;
margin: 0px;
overflow: hidden;
height: 100%;
}
#ballscreen {
position: relative;
background-color: rgba(0.0, 0.0, 0.0, 0.0);
width: 320px;
height: 480px;
border: 1px solid black;
}
.ball {
-webkit-transition: left 0.1s linear, top 0.1s linear;
position: absolute;
}
.ball .bullet {
width: 10px;
height: 10px;
position: absolute;
left: -5px;
top: -5px;
border-radius: 5px;
background-color: #f00;
}
#svgscreen {
position: absolute;
width: 320px;
height: 480px;
}
#svgscreen line {
stroke: rgb(255,0,0);
stroke-width: 2;
}
< / style >
< script type = "text/javascript" src = "connection.js" > < / script >
< script type = "text/javascript" src = "websocket.js" > < / script >
< script type = "text/javascript" src = "drawing.js" > < / script >
< script type = "text/javascript" src = "rendering.js" > < / script >
< script language = "javascript" type = "text/javascript" >
var myName = Math.random().toString(36).substring(7);
var websocket;
var ballscreen;
var svgscreen;
var current_svgline;
var balls_online = new Array();
var svglines_online = new Array();
var speed = 100;
function init() {
var statusbar = document.getElementById('status');
ballscreen = document.getElementById("ballscreen");
document.getElementById("myName").innerHTML = myName;
svgscreen = document.getElementById("svgscreen");
if ("WebSocket" in window){
init_drawing(ballscreen, drawStart, drawMove, drawEnd, drawRemove);
init_websocket(statusbar, onOpen, onMessage);
} else {
statusbar.innerHTML = 'No websockets :(. This means that you either use < em > Internet Explorer< / em > or < em > Android< / em > . In both cases, I suggest that you use < a href = "http://www.google.com/chrome/" > Chrome< / a > or < a href = "http://www.getfirefox.net/" > Firefox< / a > !';
}
}
function onOpen(evt) {
doSend();
}
function onMessage(evt) {
var ret = JSON.parse(evt.data);
var people = ret.people;
var balls = ret.balls;
var lines = ret.lines;
for(i in balls_online){
balls_online[i].should_remove = true;
}
for (var i = balls.length - 1; i >= 0; i--) {
var ball = document.getElementById(balls[i].information);
if(ball){
ball.style.left = balls[i].position.x + "px";
ball.style.top = balls[i].position.y + "px";
ball.should_remove = false;
} else {
var ball = document.createElement('div');
ball.should_remove = false;
ball.id = balls[i].information;
ball.className = 'ball';
ball.innerHTML = '< div class = "bullet" > < / div > ';
ball.style.left = balls[i].position.x + "px";
ball.style.top = balls[i].position.y + "px";
ballscreen.appendChild(ball);
balls_online.push(ball);
}
}
for (var i = balls_online.length - 1; i >= 0; i--) {
if(balls_online[i].should_remove){
ballscreen.removeChild(balls_online[i]);
balls_online.splice(i, 1);
}
};
for (var i = svglines_online.length - 1; i >= 0; i--) {
svgscreen.removeChild(svglines_online[i]);
};
svglines_online = new Array();
for (var i = lines.length - 1; i >= 0; i--) {
svglines_online.push(addLine(lines[i], svgscreen));
};
setTimeout(function(){
doSend();
}, speed);
}
function drawStart(line){
current_svgline = addLine(line, svgscreen);
}
function drawMove(line){
updateLine(current_svgline, line);
}
function drawEnd(line){
drawRemove(line);
line.line_kind = 1;
var packet = {
command: 'add line',
data: line
};
websocket.send(JSON.stringify(packet));
}
function drawRemove(line){
if(current_svgline){
svgscreen.removeChild(current_svgline);
current_svgline = null;
}
}
function doSend(message) {
var myself = {
name: myName,
size: {width: window.innerWidth, height: window.innerHeight}
};
var packet = {
command: 'update user',
data: myself
};
websocket.send(JSON.stringify(packet));
}
window.addEventListener("load", init, false);
setTimeout(function (){
window.scrollTo(0, 1);
}, 0);
< / script >
< / head >
< body ontouchmove = "prevent_scrolling(event);" >
< svg id = "svgscreen" xmlns = "http://www.w3.org/2000/svg" version = "1.1" >
< rect width = "100%" height = "100%" style = "fill:rgb(255, 255, 255); opacity:0.1; stroke-width:1; stroke:rgb(0,0,0)" / >
< / svg >
< div id = "ballscreen" > < / div >
My name is: < span id = "myName" > < / span > < br / >
Status: < span id = "status" > CONNECTING...< / span >
< / body >
< / html >