Esempio n. 1
0
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 {
      
      received[data.id] = data.seq
      process.stdout.write(`${data.username}(${data.seq}): ${data.message}\n`)
      connections.forEach(connection => {
        connection.write(data)
      })
    }
  })
})
Esempio n. 2
0
  /*
    same as multiplex.createSharedStream
    but supports the additional opts:
    * encoding
    * objectMode
    */
  function makeStream(id, type, opts) {
    if(typeof type === 'object') {
      opts = type;
      type = 'd';
    }
    opts = opts || {};

    // TODO close unused end of non-duplex streams
    // remember that type can be 'd' or 'duplex' etc.
    var stream = multiplex.createSharedStream(id, opts);

    if(opts.encoding) {
      stream.setEncoding(opts.encoding);
      stream.setDefaultEncoding(opts.encoding);
    }
    if(opts.objectMode) {
      var jstream = jsonStream(stream);

      // forward error
      jstream.on('error', function(err) {
        stream.emit('error', err);
      }); 
      return jstream;
    }

    return stream;
  };
Esempio n. 3
0
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');
});
Esempio n. 4
0
 .listen(0, function () {
   var serverPort = this.address().port
   var clients = []
   for (var n = 0; n < numberOfClients; n++) {
     var client = net.connect(serverPort)
     var clientJSON = duplexJSON(client)
     clientJSON.socket = client
     clients.push(clientJSON)
   }
   if (numberOfClients === 1) {
     callback(clients[0], server, serverPort)
   } else {
     callback(clients, server, serverPort)
   }
 })
Esempio n. 5
0
lookup('tron.local', function (err, ip) {
  if (err) {
    console.log('error looking up dns', err);
    process.exit(1);
  }
  var socket = net.connect(8124, ip);
  socket = jsonStream(socket)

  process.stdin.on('data', (data)=>{
    socket.write({nick: nickname, msg: data.toString()});
  });

  socket.on('data', (data)=>{
    process.stdout.write(data);
  });
});
Esempio n. 6
0
swarm.on('connection', function (socket, id) {
  console.log('info> direct connection to', id)

  socket = jsonStream(socket)
  socket.on('data', function (data) {
    console.log(data.toString().trim())

    if (data.seq <= received[data.from]) return // already received this one
    received[data.from] = data.seq
    console.log(data.username + '> ' + data.message)
    connections.forEach(function (socket) {
      socket.write(data)
    })
  })

  connections.add(socket)
})
Esempio n. 7
0
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);
});
Esempio n. 8
0
swarm.on('connection', (socket, peer) => {
  console.log('connected to', peer)

  socket = jsonStream(socket)
  activeSockets.add(socket)

  socket.on('data', (data) => {
    if (hasntSeen(data) && data.clientId !== clientId) {
      process.stdout.write(`${data.username}> ${data.message}\n`)

      // Store the most recent message we've seen from `clientId`
      clientToCount[data.clientId] = data.count

      // Forward thru to everyone
      activeSockets.forEach(socket => socket.write(data))
    }
  })
})