-
Notifications
You must be signed in to change notification settings - Fork 1
/
server.js
98 lines (64 loc) · 2.33 KB
/
server.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
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
//const ipaddr = require('ipaddr.js'); used to convert ipv6 to ipv4
const IPv4 = require("ip-num").IPv4;
var all_peers = []
io.on('connection', function(socket) {
var address = socket.handshake.address ;
var ipv4 = new IPv4(address); //extract ip address of peer
ipv4 = ipv4.toString();
console.log('A peer connected : '+ ipv4);
var peer = {}
peer.ip = ipv4;
//socket.emit("your_name");
socket.on("my_name",function(data){
socket.emit('peer_list',all_peers);
peer.name = data.username;
peer.port = data.port;
console.log("received peer name : " + peer.name + " " + peer.port);
var flag = true;
for(var i=0 ; i<all_peers.length ; i++)
{
if(all_peers[i].name == peer.name){
flag = false;
}
}
if(flag){
all_peers.push(peer);
}
console.log("All peers till now:");
all_peers.forEach(element => {
console.log(element.name);
});
//sending client the list of all peers
// socket.emit("list_of_users",all_sockets)
// console.log("This is list of users till now ");
// all_sockets.forEach(element => {
// console.log(element);
// });
});
// socket.on('peers_list',function(){
// socket.emit('peers_list',all_peers);
// });
//Send a message when
// setTimeout(function() {
// //Sending an object when emmiting an event
// socket.emit('testerEvent', { description: 'A custom event named testerEvent!'});
// }, 4000);
socket.on("discon_1",function(){
const index= all_peers.indexOf(peer);
if(index > -1){
all_peers.splice(index ,1) //removing a peer from the all_peers array on disconnection.
}
console.log('A peer disconnected and entry removed : '+peer.name );
socket.disconnect(true);
});
socket.on('disconnect', function () {
console.log(" a peer disconn : " + peer.name);
//all_sockets.delete(socket.id)
});
});
http.listen(8000,'0.0.0.0' ,function() {
console.log('Central Server is running on localhost:8000');
});