-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclients.js
More file actions
60 lines (49 loc) · 1.46 KB
/
clients.js
File metadata and controls
60 lines (49 loc) · 1.46 KB
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
var clients = {};
exports.clients = clients;
exports.names = function(){
var keys = Object.keys(clients);
var res = [];
for (var i = 0; i < keys.length; i++) {
res.push(clients[keys[i]].nick);
}
return res;
}
function makeSocketKey(socket){
return socket.remoteAddress + ":" + socket.remotePort;
}
exports.buildClient = function(socket, prop, msgContent){
var key = makeSocketKey(socket);
if (clients[key] == undefined){
clients[key] = {};
clients[key].channels = [];
clients[key].socket = socket;
}
if (prop != undefined)
clients[key][prop] = msgContent;
return true;
}
exports.joinChannel = function(socket, channel){
var key = makeSocketKey(socket);
if (clients[key].channels.indexOf(channel) < 0){
clients[key].channels.push(channel);
return true;
}
return false;
}
exports.partChannel = function(socket, channel){
var key = makeSocketKey(socket);
clients[key].channels.splice(clients[key].channels.indexOf(clients[key].nick, 1));
}
exports.getSocketByNick = function(nick){
var keys = Object.keys(clients);
for (var i = 0; i < keys.length; i++) {
if (clients[keys[i]].nick == nick) {
return clients[keys[i]].socket;
}
}
return null;
}
exports.getClientName = function(socket){
var key = makeSocketKey(socket);
return clients[key].nick + "!" + clients[key].user;
}