aboutsummaryrefslogtreecommitdiff
path: root/webAO/master.js
blob: 7ddc9cdf50e307a625c68af058502aea34dcc745 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
const MASTERSERVER_IP = "master.aceattorneyonline.com:27014";

const masterserver = new WebSocket("ws://" + MASTERSERVER_IP);
masterserver.onopen = (evt) => onOpen(evt);
masterserver.onmessage = (evt) => onMessage(evt);

const descs = [];
descs[99] = "This is your computer on port 27016";
const onlinec = [];

function setServ(ID) {
	console.log(descs[ID]);
	if (descs[ID] !== undefined) {
		document.getElementById("serverdescC").innerHTML = "<b>Online: " + onlinec[ID] + "</b><br>" + descs[ID];
	}
	else {
		document.getElementById("serverdescC").innerHTML = "";
	}
}

function onOpen(_e) {
	masterserver.send("ID#webAO#webAO#%");
	masterserver.send("ALL#%");
	masterserver.send("VC#%");
}

function checkOnline(serverID, coIP) {
	function onCOOpen(_e) {
		document.getElementById(`server${serverID}`).className = "available";
		oserv.send("HI#webAO#%");
		oserv.send("ID#webAO#webAO#%");
	}

	function onCOMessage(e) {
		const comsg = e.data;
		const coheader = comsg.split("#", 2)[0];
		const coarguments = comsg.split("#").slice(1);
		if (coheader === "PN") {
			onlinec[serverID] = `${coarguments[0]}/${coarguments[1]}`;
			oserv.close();
		}
	}

	var oserv = new WebSocket("ws://" + coIP);

	oserv.onopen = function (evt) {
		onCOOpen(evt);
	};

	oserv.onmessage = function (evt) {
		onCOMessage(evt);
	};

}

function onMessage(e) {
	const msg = e.data;
	console.log(msg);
	const header = msg.split("#", 2)[0];

	if (header === "ALL") {
		const servers = msg.split("#").slice(1);
		for (let i = 0; i < servers.length; i++) {
			const serverEntry = servers[i];
			const args = serverEntry.split("&");
			const asset = args[4] ? `&asset=${args[4]}` : "";

			document.getElementById("masterlist").innerHTML +=
				`<li id="server${i}" class="unavailable" onmouseover="setServ(${i})"><p>${args[0]}</p>`
				+ `<a class="button" href="client.html?mode=watch&ip=${args[2]}:${args[3]}${asset}">Watch</a>`
				+ `<a class="button" href="client.html?mode=join&ip=${args[2]}:${args[3]}${asset}">Join</a></li><br/>`;
			descs[i] = args[1];
			setTimeout(checkOnline(i, args[2] + ":" + args[3]), 3000);
		}
	} else if (header === "SN") {
		const args = msg.split("#");
		const i = args[1];
		console.log(args);
		document.getElementById("masterlist").innerHTML +=
			`<li id="server${i}" class="unavailable" onmouseover="setServ(${i})"><p>${args[5]}</p>`
			+ `<a class="button" href="client.html?mode=watch&ip=${args[2]}:${args[4]}">Watch</a>`
			+ `<a class="button" href="client.html?mode=join&ip=${args[2]}:${args[4]}">Join</a></li><br/>`;
		descs[i] = args[6];
		masterserver.send("SR#" + i + "#%");
		setTimeout(checkOnline(i, args[2] + ":" + args[4]), 3000);
	} else if (header === "servercheok") {
		const args = msg.split("#").slice(1);
		console.log(args);
		document.getElementById("clientinfo").innerHTML = `Client version: ${args[0]}`;
	} else if (header === "SV") {
		const args = msg.split("#").slice(1);
		console.log(args);
		document.getElementById("serverinfo").innerHTML = `Master server version: ${args[0]}`;
	}
}