message_area.insertAdjacentHTML('beforeend', message);
}
-function register_loaded(name) {
- add_message("success", name + " is now in the game!");
-}
-
function register(form) {
var request = new XMLHttpRequest();
- request.addEventListener("load", register_loaded(form.name.value));
request.open("POST", API + "register");
request.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
form.reset();
}
+
+const events = new EventSource(API + "events");
+
+events.onerror = function(event) {
+ if (event.target.readyState === EventSource.CLOSED) {
+ add_message("danger", "Connection to server lost.");
+ }
+};
+
+events.addEventListener("players", function(event) {
+ const players_element = document.getElementById("players");
+ const players = JSON.parse(event.data);
+
+ players_element.innerHTML = '';
+ for (const player of players) {
+ var li = document.createElement('li');
+ li.id = "player-" + player.id;
+ li.innerText = player.name;
+ players_element.appendChild(li);
+ }
+});
+
+events.addEventListener("player-join", function(event) {
+ const players = document.getElementById("players");
+ const player = JSON.parse(event.data);
+
+ const li = document.createElement('li');
+ li.id = "player-" + player.id;
+ li.innerText = player.name;
+ players.appendChild(li);
+
+ add_message("success", player.name + " is now in the game!");
+});
+
+events.addEventListener("player-leave", function(event) {
+ const players = document.getElementById("players");
+ const id = JSON.parse(event.data);
+ const player = document.getElementById("player-" + id.id);
+
+ add_message("info", player.innerText + " has left the game.");
+ players.removeChild(player);
+});
+
+events.addEventListener("capture", function(event_string) {
+ const players = document.getElementById("players");
+ const event = JSON.parse(event_string.data);
+ const player = document.getElementById("player-" + event.captee);
+
+ players.removeChild(player);
+});