forked from magician03/P2P-Chat
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpeer1.js
52 lines (41 loc) · 1.42 KB
/
peer1.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
// modules requirements
require('lookup-multicast-dns/global');
var topology = require('fully-connected-topology');
var jsonStream = require('duplex-json-stream');
var streamSet = require('stream-set');
var toPort = require('hash-to-port');
var register = require('register-multicast-dns');
// input buffer
var me = process.argv[2];
var peers = process.argv.slice(3);
//topology creation and connecting all available peers to streamSet
var swarm = topology(toAddress(me), peers.map(toAddress));
var connections = streamSet();
//var received = {};
//registering for multicast-dns
register(me);
//gets the available connections and and it inputs
swarm.on('connection', function (socket, id) {
console.log('new_peer>', id);
// var username = id.split('.')[0];
// var newUser = document.createElement('div');
// newUser.setAttribute('class', 'peer');
// newUser.innerHTML = username;
// document.getElementById('peer-box').appendChild(newUser);
socket = jsonStream(socket)
socket.on('data', function (data) {
console.log(data.username + '> ' + data.message);
});
connections.add(socket);
});
//checks the iput beffer on executes socket.write
process.stdin.on('data', function (data) {
connections.forEach(function (socket) {
var message = data.toString().trim() ;
socket.write({username: me, message: message})
});
});
//username hasingx
function toAddress (name) {
return name + '.local:' + toPort(name);
}