Client: rename internal WebSocket event handlers

This commit is contained in:
Lexi / Zoe 2019-01-20 05:00:02 +01:00
parent 98c89f0702
commit e746a4e8ca
Signed by: binaryDiv
GPG Key ID: F8D4956E224DA232
1 changed files with 51 additions and 30 deletions

View File

@ -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