const jsonStream = require('duplex-json-stream'); const streamSet = require('stream-set'); const topology = require('fully-connected-topology'); const me = process.argv[2]; const peers = process.argv.slice(3); const swarm = topology(me, peers); const streams = streamSet(); var id = Math.random(); var seq = 0; var logs = {}; swarm.on('connection', (peer) => { peer = jsonStream(peer); streams.add(peer); peer.on('data', (data) => { if (logs[data.log] <= data.seq) return; logs[data.log] = data.seq; console.log(data.username + '> ' + data.message); streams.forEach((otherPeer) => { otherPeer.write(data); }); }); console.log('new connection'); }); process.stdin.on('data', (data) => {
// 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)
const topology = require('fully-connected-topology') const jsonStream = require('duplex-json-stream') const streamSet = require('stream-set') const username = process.argv[2] const me = process.argv[3] const peers = process.argv.slice(4) const swarm = topology(me, peers) let connections = streamSet() let received = {} let seq = 0 const id = Math.random() swarm.on('connection', (socket, userAddress) => { console.log(`new connection from ${userAddress}, total connections: ${connections.size}`) socket = jsonStream(socket) connections.add(socket) socket.on('close', () => { console.log(`${userAddress} left`); console.log(`total connections: ${connections.size}`) }) socket.on('data', data => { if (data.seq <= received[data.id] ) { return } else {