-
Notifications
You must be signed in to change notification settings - Fork 14
/
chat-socket.js
39 lines (32 loc) · 1.05 KB
/
chat-socket.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
module.exports = function()
{
var colors = ['#AE331F', '#D68434', '#116A9F', '#360B95', '#5F209E'];
var connections = { };
var nsp = io.of('/node-chat');
nsp.on('connection', function(socket) {
// give each connected user a random color so it's easier to tell them apart in the chat log //
socket.on('user-ready', function(data) {
socket.name = data.name;
socket.color = data.color = colors[Math.floor(Math.random() * colors.length)];
broadcastMessage('user-ready', data);
});
socket.on('user-message', function(data) {
data.color = socket.color;
broadcastMessage('user-message', data);
});
function dispatchStatus()
{
broadcastMessage('status', connections);
}
function broadcastMessage(message, data)
{
nsp.emit(message, data);
}
// handle connections & disconnections //
connections[socket.id] = {}; dispatchStatus();
socket.on('disconnect', function() {
broadcastMessage('user-disconnected', { name : socket.name, color : socket.color });
delete connections[socket.id]; dispatchStatus();
});
});
}();