-
Notifications
You must be signed in to change notification settings - Fork 0
/
routes.js
104 lines (69 loc) · 1.98 KB
/
routes.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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
var gravatar = require('gravatar');
module.exports = function(app,io){
app.get('/', function(req, res){
res.render('home');
});
app.get('/create', function(req,res){
var id = Math.round((Math.random() * 1000000));
res.redirect('/chat/'+id);
});
app.get('/chat/:id', function(req,res){
res.render('chat');
});
var chat = io.of('/socket').on('connection', function (socket) {
socket.on('load',function(data){
if(chat.clients(data).length === 0 ) {
socket.emit('peopleinchat', {number: 0});
}
else if(chat.clients(data).length === 1) {
socket.emit('peopleinchat', {
number: 1,
user: chat.clients(data)[0].username,
avatar: chat.clients(data)[0].avatar,
id: data
});
}
else if(chat.clients(data).length >= 2) {
chat.emit('tooMany', {boolean: true});
}
});
socket.on('login', function(data) {
if(chat.clients(data.id).length < 2){
socket.username = data.user;
socket.room = data.id;
socket.avatar = gravatar.url(data.avatar, {s: '140', r: 'x', d: 'mm'});
socket.emit('img', socket.avatar);
socket.join(data.id);
if(chat.clients(data.id).length == 2) {
var usernames = [],
avatars = [];
usernames.push(chat.clients(data.id)[0].username);
usernames.push(chat.clients(data.id)[1].username);
avatars.push(chat.clients(data.id)[0].avatar);
avatars.push(chat.clients(data.id)[1].avatar);
chat.in(data.id).emit('startChat', {
boolean: true,
id: data.id,
users: usernames,
avatars: avatars
});
}
}
else {
socket.emit('tooMany', {boolean: true});
}
});
socket.on('disconnect', function() {
socket.broadcast.to(this.room).emit('leave', {
boolean: true,
room: this.room,
user: this.username,
avatar: this.avatar
});
socket.leave(socket.room);
});
socket.on('msg', function(data){
socket.broadcast.to(socket.room).emit('receive', {msg: data.msg, user: data.user, img: data.img});
});
});
};