- Added chat room function

- improved logs
This commit is contained in:
Administrator 2021-05-26 22:41:05 +02:00
parent b911164db2
commit 50327dfffc
3 changed files with 48 additions and 15 deletions

View File

@ -1,47 +1,81 @@
let express = require('express'); let express = require('express');
let app = express(); let app = express();
let server = require('http').createServer(app); let server = require('http').createServer(app);
let {Server} = require("socket.io");
let io = require('socket.io')(server); let io = new Server(server);
let port = parseInt(process.env.PORT) || 5000; let port = parseInt(process.env.PORT) || 5000;
server.listen(port, function () { server.listen(port, function () {
console.info('Webserver running'); generate_log_message("", "", 'RUNNING', "PORT " + port);
console.info('Port %d', port);
}); });
app.use(express.static(__dirname + '/../public')); app.use(express.static(__dirname + '/../public'));
io.on('connection', function (socket) { io.on('connection', socket => {
let addedUser = false; let addedUser = false;
socket.on('add user', function (username) { socket.on('add user', function (data) {
socket.username = username; socket.username = data.username;
socket.room = data.room_name;
addedUser = true; addedUser = true;
socket.join(socket.room);
socket.emit('login'); 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.on('new message', function (data) {
socket.broadcast.emit('new message', { socket.broadcast.to(socket.room).emit('new message', {
username: socket.username, username: socket.username,
message: data message: data
}); });
console.info("[MESSAGE] " + socket.username + ": " + data); generate_log_message(socket.room, socket.username, "MESSAGE", data);
}); });
socket.on('disconnect', function () { socket.on('disconnect', function () {
if (addedUser) { 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)
}

View File

@ -3,7 +3,6 @@
"version": "1.0.0", "version": "1.0.0",
"dependencies": { "dependencies": {
"express": "^4.17.1", "express": "^4.17.1",
"pixi.js": "^6.0.4",
"socket.io": "^4.1.2" "socket.io": "^4.1.2"
} }
} }

View File

@ -24,7 +24,7 @@ window.addEventListener('load', function () {
}); });
// Login // Login
socket.emit('add user', username); socket.emit('add user', {'username': username, 'room_name': room_name});
}); });
function sendMessage() { function sendMessage() {