Compare commits

...

2 Commits

3 changed files with 85 additions and 81 deletions

View File

@ -11,6 +11,7 @@
<h1>InstantChat</h1> <h1>InstantChat</h1>
<script src="js/settings.js"></script>
<script src="js/client.js"></script> <script src="js/client.js"></script>
</body> </body>

View File

@ -1,47 +1,41 @@
// Constants and variables "use strict";
// const wsUri = "ws://localhost:32715";
const wsUri = "wss://chat.glitch-in.space:443/ws/";
let websocket;
class Client {
constructor(wsUri) {
this.wsUri = wsUri;
// Initialization // Create WebSocket and set callbacks
function init() { console.log("Initialize Client...")
console.log("Init..."); this.webSocket = new WebSocket(wsUri);
openWebSocket(); this.webSocket.onopen = this.onOpen.bind(this);
} this.webSocket.onclose = this.onClose.bind(this);
this.webSocket.onmessage = this.onMessage.bind(this);
// Open WebSocket this.webSocket.onerror = this.onError.bind(this);
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 // WebSocket event handlers
function onOpen(evt) { onOpen(evt) {
console.log("Connected to " + wsUri + "."); console.log("Connected to " + this.wsUri);
// Send init command containing chat ID and nickname // Send init command containing chat ID and nickname
sendInit(); this.sendInit();
} }
function onClose(evt) { onClose(evt) {
console.log("Connection closed (code " + evt.code + ")."); console.log("Connection closed (code " + evt.code + ").");
} }
function onMessage(evt) { onMessage(evt) {
console.log("Received: " + evt.data); console.log("Received: " + evt.data);
parseMessage(evt.data); this.parseMessage(evt.data);
} }
function onError(evt) { onError(evt) {
console.error("Connection error: ", evt); console.error("Connection error: ", evt);
} }
// Command senders // Command senders
function sendInit() { sendInit() {
// Define command as JSON object // Define command as JSON object
let initObj = { let initObj = {
action: "init", action: "init",
@ -52,11 +46,11 @@ function sendInit() {
// Send command as JSON string // Send command as JSON string
let initJson = JSON.stringify(initObj); let initJson = JSON.stringify(initObj);
console.log("Sending init: " + initJson); console.log("Sending init: " + initJson);
websocket.send(initJson); this.webSocket.send(initJson);
} }
// Message parsing // Message parsing
function parseMessage(msgString) { parseMessage(msgString) {
try { try {
let msg = JSON.parse(msgString); let msg = JSON.parse(msgString);
@ -83,8 +77,10 @@ function parseMessage(msgString) {
console.error("Error parsing message JSON: " + e.message); console.error("Error parsing message JSON: " + e.message);
} }
} }
}
// Run script after page is loaded // Run script after page is loaded
$(function() { $(function() {
init(); const wsUri = AppSettings.serverWsUri;
let client = new Client(wsUri);
}); });

View File

@ -0,0 +1,7 @@
"use strict";
// Global settings object
const AppSettings = {
// serverWsUri: "ws://localhost:32715",
serverWsUri: "wss://chat.glitch-in.space:443/ws/",
};