diff --git a/public_html/js/client.js b/public_html/js/client.js
index 974a5bd..8a19005 100644
--- a/public_html/js/client.js
+++ b/public_html/js/client.js
@@ -4,55 +4,76 @@ class Client {
constructor(wsUri) {
this.wsUri = wsUri;
- // Create WebSocket and set callbacks
+ // Create WebSocket and set internal 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);
+ this.webSocket.onopen = this._onSocketOpen.bind(this);
+ this.webSocket.onclose = this._onSocketClose.bind(this);
+ this.webSocket.onerror = this._onSocketError.bind(this);
+ this.webSocket.onmessage = this._onSocketMessage.bind(this);
}
- // WebSocket event handlers
- onOpen(evt) {
+ // Internal WebSocket event handlers
+ _onSocketOpen(evt) {
console.log("Connected to " + this.wsUri);
// Send init command containing chat ID and nickname
this.sendInit();
}
- onClose(evt) {
+ _onSocketClose(evt) {
console.log("Connection closed (code " + evt.code + ").");
}
- onMessage(evt) {
- console.log("Received: " + evt.data);
- this.parseMessage(evt.data);
- }
-
- onError(evt) {
+ _onSocketError(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);
+ _onSocketMessage(evt) {
+ console.log("Received: " + evt.data);
+ this._parseMessage(evt.data);
}
- // Message parsing
- parseMessage(msgString) {
+ /**
+ * Sends an arbitrary command as JSON.
+ *
+ * commandObj: The command as an object ('action' specifies type of command).
+ */
+ sendCommand(commandObj) {
+ const commandJson = JSON.stringify(commandObj);
+ console.log("Sending command: " + commandJson);
+ this.webSocket.send(commandJson);
+ }
+
+ /**
+ * Sends the 'init' command which sets up the session. Also sets the chat ID and nickname.
+ */
+ sendInit() {
+ this.sendCommand({
+ action: "init",
+ chat_id: "42",
+ nickname: "binaryDiv",
+ });
+ }
+
+ /**
+ * Sends the 'message' command which sends a chat message to the chat.
+ *
+ * msgText: The text of the chat message.
+ */
+ sendChatMessage(msgText) {
+ this.sendCommand({
+ action: "message",
+ text: msgText,
+ });
+ }
+
+ /**
+ * Parses an incoming JSON message and dispatches specific events.
+ */
+ _parseMessage(msgString) {
try {
- let msg = JSON.parse(msgString);
+ const msg = JSON.parse(msgString);
switch (msg.type) {
// Response to "init" command