Пример #1
0
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) => {
Пример #2
0
// 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)
Пример #3
0
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 {