// Constants and variables // const wsUri = "ws://localhost:32715"; const wsUri = "wss://chat.glitch-in.space:443/ws/"; let websocket; // 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 + "'"); } } catch (e) { console.error("Error parsing message JSON: " + e.message); } } // Run script after page is loaded $(function() { init(); });