wip chat users and rooms base
This commit is contained in:
18
tests_hugo/chat_node/chat_server/event_adduser.js
Normal file
18
tests_hugo/chat_node/chat_server/event_adduser.js
Normal file
@@ -0,0 +1,18 @@
|
||||
const add_user = (socket, 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, 'room1');
|
||||
};
|
||||
|
||||
module.exports = add_user;
|
||||
|
||||
7
tests_hugo/chat_node/chat_server/event_sendmsg.js
Normal file
7
tests_hugo/chat_node/chat_server/event_sendmsg.js
Normal file
@@ -0,0 +1,7 @@
|
||||
const send_msg = (socket, msg) => {
|
||||
// console.log('message received: ' + msg);
|
||||
socket.to(socket.room).emit('updatemsg', socket.username, msg);
|
||||
};
|
||||
|
||||
module.exports = send_msg;
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
//let app = require('express')();
|
||||
//let server = require('http').createServer(app);
|
||||
//let io = require('socket.io')(http);
|
||||
|
||||
const express = require('express');
|
||||
//const cors = require('cors');
|
||||
const app = express();
|
||||
const http = require('http');
|
||||
const server = http.createServer(app);
|
||||
@@ -15,29 +11,52 @@ const io = new Server(server, {
|
||||
origin: "*"
|
||||
}
|
||||
});
|
||||
const send_msg = require('./event_sendmsg');
|
||||
const add_user = require('./event_adduser');
|
||||
|
||||
// cors : https://stackoverflow.com/questions/7067966/why-doesnt-adding-cors-headers-to-an-options-route-allow-browsers-to-access-my
|
||||
// https://www.npmjs.com/package/cors
|
||||
//app.use(cors());
|
||||
|
||||
//app.get("/", function (req, res) {
|
||||
// console.log("req.headers: ");
|
||||
// console.log(req.headers);
|
||||
//})
|
||||
let usernames = {};
|
||||
let rooms = ['room1', 'room2', 'room3'];
|
||||
|
||||
io.on('connection', (socket) => {
|
||||
|
||||
console.log('a user is connected');
|
||||
|
||||
socket.on('disconnect', function () {
|
||||
console.log('a user is disconnected');
|
||||
})
|
||||
socket.on('adduser', (username) => {
|
||||
add_user(socket, username);
|
||||
});
|
||||
|
||||
socket.on('chat_message', function (msg) {
|
||||
console.log('message received: ' + msg);
|
||||
socket.broadcast.emit('chat_message', msg);
|
||||
//io.emit('chat_message', msg);
|
||||
})
|
||||
socket.on('sendmsg', (msg) => {
|
||||
send_msg(socket, msg);
|
||||
});
|
||||
|
||||
// socket.on('sendmsg', function (data) {
|
||||
// // we tell the client to execute 'updatechat' with 2 parameters
|
||||
// io.sockets.in(socket.room).emit('updatemsg', socket.username, data);
|
||||
// });
|
||||
|
||||
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);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user