changed docker file nest to avoid rebuild everything each time, and small changes in chat gateway

This commit is contained in:
simplonco
2023-01-02 18:08:50 +01:00
parent 32187fa06c
commit 1551ec6499
150 changed files with 49244 additions and 31 deletions

View File

@@ -0,0 +1,21 @@
const add_user = (socket, username, usernames, rooms) => {
//console.log(`adduser: ${username}, ${usernames[username]}`);
// store the username in the socket session for this client
socket.username = username;
// store the room name in the socket session for this client
socket.room = 'room1';
// add the client's username to the global list
usernames[username] = username;
// send client to room 1
socket.join('room1');
// echo to client they've connected
socket.emit('updatemsg', 'SERVER', 'you have connected to room1');
// echo to room 1 that a person has connected to their room
socket.broadcast.to('room1').emit('updatemsg', 'SERVER', username + ' has connected to this room');
socket.emit('updaterooms', rooms);
};
module.exports = add_user;

View File

@@ -0,0 +1,9 @@
const create_room = (room_name) => {
//console.log('createroom');
let last_room = rooms[rooms.length - 1];
rooms.push({ name: room_name, id: last_room.id + 1 });
socket.emit('updaterooms', rooms);
};
module.exports = create_room;

View File

@@ -0,0 +1,8 @@
const send_msg = (socket, msg) => {
//console.log('message from: ' + socket.username);
//console.log('message received: ' + msg);
socket.to(socket.room).emit('updatemsg', socket.username, msg);
};
module.exports = send_msg;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
{
"dependencies": {
"cors": "^2.8.5",
"express": "^4.18.2",
"socket.io": "^4.5.4"
}
}

View File

@@ -0,0 +1,74 @@
const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const { Server } = require("socket.io");
// https://socket.io/docs/v4/handling-cors/
const io = new Server(server, {
cors: {
// change this for the real front origin
origin: "*"
}
});
const send_msg = require('./event_sendmsg');
const add_user = require('./event_adduser');
const create_room = require('./event_createroom');
let usernames = {};
let rooms = [
{ name: 'room1', id: 1 },
{ name: 'room2', id: 2 },
{ name: 'room3', id: 3 }
];
let last_room = 0;
io.on('connection', (socket) => {
socket.on('adduser', (username) => {
add_user(socket, username, usernames, rooms);
});
socket.on('sendmsg', (msg) => {
send_msg(socket, msg);
});
socket.on('createroom', (room_name) => {
create_room(room_name);
});
socket.on('joinlastroom', () => {
if (socket.room !== null)
socket.emit('updaterooms', socket.room);
});
socket.on('switchroom', function(newroom){
// leave the current room (stored in session)
socket.leave(socket.room);
// join new room, received as function parameter
socket.join(newroom);
socket.emit('updatechat', 'SERVER', 'you have connected to '+ newroom);
// sent message to OLD room
socket.broadcast.to(socket.room).emit('updatechat', 'SERVER', socket.username+' has left this room');
// update socket session room title
socket.room = newroom;
socket.broadcast.to(newroom).emit('updatechat', 'SERVER', socket.username+' has joined this room');
// socket.emit('updaterooms', rooms, newroom);
});
socket.on('disconnect', () => {
// remove the username from global usernames list
delete usernames[socket.username];
// update list of users in chat, client-side
io.sockets.emit('updateusers', usernames);
// echo globally that this client has left
socket.broadcast.emit('updatechat', 'SERVER', socket.username + ' has disconnected');
socket.leave(socket.room);
});
});
server.listen(3000, function () {
console.log('server running on 3000');
})