91 lines
1.9 KiB
JavaScript
91 lines
1.9 KiB
JavaScript
// 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();
|
|
});
|