-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchatServer.js
executable file
·59 lines (48 loc) · 1.87 KB
/
chatServer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
var express = require('express');
var app = express();
app.set('port', process.env.PORT || 8080);
var server = require('http').Server(app);
var io = require('socket.io')(server);
var port = app.get('port');
app.use(express.static('public'));
server.listen(port);
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
var usernames = {};
var rooms = [];
io.sockets.on('connection', function (socket) {
socket.on('adduser', function (data) {
var username = data.username;
var room = data.room;
if (rooms.indexOf(room) != -1) {
socket.username = username;
socket.room = room;
usernames[username] = username;
socket.join(room);
socket.emit('updatechat', 'SERVER', 'You are connected. Start chatting');
socket.broadcast.to(room).emit('updatechat', 'SERVER', username + ' has connected to this room');
} else {
socket.emit('updatechat', 'SERVER', 'Please enter valid code.');
}
});
socket.on('createroom', function (data) {
var id = Math.random() * 100 + 1;
var new_room = ("Room" + (id < 10 ? "0" : "") + id).substring(0, 6);
rooms.push(new_room);
data.room = new_room;
socket.emit('updatechat', 'SERVER', 'Your room is ready, invite someone using this ID:' + new_room);
socket.emit('roomcreated', data);
});
socket.on('sendchat', function (data) {
io.sockets.in(socket.room).emit('updatechat', socket.username, data);
});
socket.on('disconnect', function () {
delete usernames[socket.username];
io.sockets.emit('updateusers', usernames);
if (socket.username !== undefined) {
socket.broadcast.emit('updatechat', 'SERVER', socket.username + ' has disconnected');
socket.leave(socket.room);
}
});
});