-(function () {
- "use strict";
- var input_div = null;
- var clients_list = null;
-
- function write(msg) {
- common.write(input_div.previousSibling, msg);
- }
- function master_send(hub, client_ids, client_id, obj) {
- obj.client_ids = client_ids;
- obj.client_id = client_id;
- hub.send(JSON.stringify(obj));
- }
-
- function setup_chat(hub) {
- clients_list = new common.ClientsList();
- input_div = document.createElement("div");
- input_div.append(document.createTextNode("MASTER "));
- input_div.append(common.get_input(function () {
- var input = input_div.getElementsByTagName("input")[0];
- master_send(hub, clients_list.selected(), null, {
- "name": "MASTER",
- "data": input.value,
- });
- write("MASTER [null]: " + input.value);
- input.value = "";
- }));
-
- document.body.append(document.createElement("div")); // output
- document.body.append(input_div);
- }
-
- function open() {
- setup_chat(this);
- write("connected to " + ws_uri);
- }
-
- function close() {
- write("connection lost");
- }
-
- function join_leave_broadcast(hub, client_id, client_name, action) {
- write("[action]: " + client_name + " " + obj.action + "s");
- master_send(hub, clients_list.all(), obj.client_id, {
- "action": obj.action,
- "name": client_name,
- });
- }
-
- function message(msg) {
- var obj = JSON.parse(msg.data);
- var client_name;
- if (obj.action === "join") {
- clients_list.append(obj.client_id);
- join_leave_broadcast(
- this, obj.client_id, clients_list.get_name(obj.client_id), obj.action
- );
- } else if (obj.action === "leave") {
- client_name = clients_list.get_name(obj.client_id);
- clients_list.remove(obj.client_id);
- join_leave_broadcast(this, obj.client_id, client_name, obj.action);
- } else if (obj.action == "set_name") {
- client_name = clients_list.set_name(obj.client_id, obj.name);
- write(
- "[action]: " +
- client_name +
- " changes name to " +
- obj.name
- );
- master_send(this, clients_list.all(), obj.client_id, {
- "action": "set_name",
- "old_name": client_name,
- "name": obj.name,
- });
- } else if (obj.hasOwnProperty("data")) {
- client_name = clients_list.get_name(obj.client_id);
- write(client_name + " [" + obj.client_id + "]: " + obj.data);
- master_send(this, clients_list.all(), obj.client_id, {
- "name": client_name,
- "data": obj.data,
- });
- }
- }
-
- common.setup(function () {new common.HubClient(ws_uri, open, close, message)});
-})();