From 50327dfffc518dfd351e21cc60aedde23125a342 Mon Sep 17 00:00:00 2001 From: H4CK3R-01 Date: Wed, 26 May 2021 22:41:05 +0200 Subject: [PATCH] - Added chat room function - improved logs --- Webservice/server.js | 60 ++++++++++++++++++++++++++++++++++---------- package.json | 1 - public/js/chat.js | 2 +- 3 files changed, 48 insertions(+), 15 deletions(-) diff --git a/Webservice/server.js b/Webservice/server.js index 543b9cb..a84ade1 100644 --- a/Webservice/server.js +++ b/Webservice/server.js @@ -1,47 +1,81 @@ let express = require('express'); let app = express(); let server = require('http').createServer(app); - -let io = require('socket.io')(server); +let {Server} = require("socket.io"); +let io = new Server(server); let port = parseInt(process.env.PORT) || 5000; server.listen(port, function () { - console.info('Webserver running'); - console.info('Port %d', port); + generate_log_message("", "", 'RUNNING', "PORT " + port); }); app.use(express.static(__dirname + '/../public')); -io.on('connection', function (socket) { +io.on('connection', socket => { let addedUser = false; - socket.on('add user', function (username) { - socket.username = username; + socket.on('add user', function (data) { + socket.username = data.username; + socket.room = data.room_name; + addedUser = true; + socket.join(socket.room); + socket.emit('login'); - socket.broadcast.emit('user joined', socket.username); + socket.broadcast.to(socket.room).emit('user joined', socket.username); - console.info("[JOINED ] " + socket.username); + generate_log_message(socket.room, socket.username, "JOINED", ""); }); socket.on('new message', function (data) { - socket.broadcast.emit('new message', { + socket.broadcast.to(socket.room).emit('new message', { username: socket.username, message: data }); - console.info("[MESSAGE] " + socket.username + ": " + data); + generate_log_message(socket.room, socket.username, "MESSAGE", data); }); socket.on('disconnect', function () { if (addedUser) { - socket.broadcast.emit('user left', socket.username); + socket.broadcast.to(socket.room).emit('user left', socket.username); } - console.info("[LEFT ] " + socket.username); + generate_log_message(socket.room, socket.username, "LEFT", ""); }); }); + +function generate_log_message(room, user, type, message) { + let color; + switch (type) { + case 'LEFT': + color = '\x1b[31m'; + break; + case 'JOINED': + color = '\x1b[32m'; + break; + case 'MESSAGE': + color = '\x1b[36m'; + break; + case 'RUNNING': + color = '\x1b[35m'; + break; + default: + color = '\x1b[0m'; + } + room = pad(10, room, ' ').substr(0, 10); + user = pad(10, user, ' ').substr(0, 10); + type = pad(10, type, ' ').substr(0, 10); + + // Reset color: \x1b[0m + console.info("%s[%s] [%s] [%s]\x1b[0m %s", color, room, user, type, message); +} + +function pad(width, string, padding) { + if (string === undefined) return pad(width, " ", " "); + return (width <= string.length) ? string : pad(width, string + padding, padding) +} diff --git a/package.json b/package.json index d2a0546..bd0a92e 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,6 @@ "version": "1.0.0", "dependencies": { "express": "^4.17.1", - "pixi.js": "^6.0.4", "socket.io": "^4.1.2" } } diff --git a/public/js/chat.js b/public/js/chat.js index 8c0f1d7..db262ae 100644 --- a/public/js/chat.js +++ b/public/js/chat.js @@ -24,7 +24,7 @@ window.addEventListener('load', function () { }); // Login - socket.emit('add user', username); + socket.emit('add user', {'username': username, 'room_name': room_name}); }); function sendMessage() {