-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathserver.js
More file actions
62 lines (53 loc) · 1.67 KB
/
server.js
File metadata and controls
62 lines (53 loc) · 1.67 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
61
62
var ws = require("ws");
var app = require("./http_server");
var _ = require('lodash');
var local_ip='192.168.0.101';
app.listen(8000, local_ip);
// fooobar comment
var senders={}
var receivers={}
var receiverServer = new ws.Server({host:local_ip, port:8080});
var senderServer= new ws.Server({host:local_ip, port:8008});
receiverServer.on('error',function(error){ console.log("receiver error "+error)} );
senderServer.on('error',function(error){ console.log("sender error "+error)} );
var handleSenderConnection = function(sender)
{
sender.on('message', function(data)
{
message = JSON.parse(data);
if(message.command=="INIT")
{
senders[message.token] = sender;
console.log("Sender "+message.token+" has been added to senders list");
}
});
}
var handleReceiverConnection = function(receiver)
{
receiver.on('message', function(data)
{
message = JSON.parse(data)
switch(message.command)
{
case "INIT":
receivers[message.token] = receiver;
console.log("Receiver "+message.token+" has been added to receivers list");
break;
case "DATA":
for(var key in senders)
{
if(!_.isEqual(receivers[key],receiver))
senders[key].send(data)
}
break;
}
});
receiver.on('close', handleReceiverClose);
}
var handleReceiverClose=function()
{
//todo: implement
}
receiverServer.on('connection', handleReceiverConnection);
senderServer.on('connection', handleSenderConnection);
console.log("Listening on port 8080");