diff --git a/public_html/js/client.js b/public_html/js/client.js index 8e9752e..9768bfc 100644 --- a/public_html/js/client.js +++ b/public_html/js/client.js @@ -1,90 +1,87 @@ // Constants and variables // const wsUri = "ws://localhost:32715"; const wsUri = "wss://chat.glitch-in.space:443/ws/"; -let websocket; +class Client { + constructor(wsUri) { + this.wsUri = wsUri; -// Initialization -function init() { - console.log("Init..."); - openWebSocket(); -} - -// Open WebSocket -function openWebSocket() { - websocket = new WebSocket(wsUri); - websocket.onopen = function(evt) { onOpen(evt) }; - websocket.onclose = function(evt) { onClose(evt) }; - websocket.onmessage = function(evt) { onMessage(evt) }; - websocket.onerror = function(evt) { onError(evt) }; -} - -// WebSocket event handlers -function onOpen(evt) { - console.log("Connected to " + wsUri + "."); - - // Send init command containing chat ID and nickname - sendInit(); -} - -function onClose(evt) { - console.log("Connection closed (code " + evt.code + ")."); -} - -function onMessage(evt) { - console.log("Received: " + evt.data); - parseMessage(evt.data); -} - -function onError(evt) { - console.error("Connection error: ", evt); -} - -// Command senders -function sendInit() { - // Define command as JSON object - let initObj = { - action: "init", - chat_id: "42", - nickname: "binaryDiv" - }; - - // Send command as JSON string - let initJson = JSON.stringify(initObj); - console.log("Sending init: " + initJson); - websocket.send(initJson); -} - -// Message parsing -function parseMessage(msgString) { - try { - let msg = JSON.parse(msgString); - - switch (msg.type) { - // Response to "init" command - case "init": - // TODO - console.log("Got init response: ", msg); - break; - - // Incoming chat message - case "message": - // TODO - console.log("Got message event: from '" + msg.from + "', text '" + msg.text + "'"); - break; - - // TODO Topic change, user join/leave, error, ... - - default: - console.error("Unknown message type '" + msg.type + "'"); - } + // Create WebSocket and set callbacks + console.log("Initialize Client...") + this.webSocket = new WebSocket(wsUri); + this.webSocket.onopen = this.onOpen.bind(this); + this.webSocket.onclose = this.onClose.bind(this); + this.webSocket.onmessage = this.onMessage.bind(this); + this.webSocket.onerror = this.onError.bind(this); } - catch (e) { - console.error("Error parsing message JSON: " + e.message); + + // WebSocket event handlers + onOpen(evt) { + console.log("Connected to " + wsUri); + + // Send init command containing chat ID and nickname + this.sendInit(); + } + + onClose(evt) { + console.log("Connection closed (code " + evt.code + ")."); + } + + onMessage(evt) { + console.log("Received: " + evt.data); + this.parseMessage(evt.data); + } + + onError(evt) { + console.error("Connection error: ", evt); + } + + // Command senders + sendInit() { + // Define command as JSON object + let initObj = { + action: "init", + chat_id: "42", + nickname: "binaryDiv" + }; + + // Send command as JSON string + let initJson = JSON.stringify(initObj); + console.log("Sending init: " + initJson); + this.webSocket.send(initJson); + } + + // Message parsing + parseMessage(msgString) { + try { + let msg = JSON.parse(msgString); + + switch (msg.type) { + // Response to "init" command + case "init": + // TODO + console.log("Got init response: ", msg); + break; + + // Incoming chat message + case "message": + // TODO + console.log("Got message event: from '" + msg.from + "', text '" + msg.text + "'"); + break; + + // TODO Topic change, user join/leave, error, ... + + default: + console.error("Unknown message type '" + msg.type + "'"); + } + } + catch (e) { + console.error("Error parsing message JSON: " + e.message); + } } } // Run script after page is loaded $(function() { - init(); + let client = new Client(wsUri); });