Skip to content

Instantly share code, notes, and snippets.

@max-lt
Created November 10, 2017 21:04
Show Gist options
  • Save max-lt/b41832d6747d9653610117b5dd02008f to your computer and use it in GitHub Desktop.
Save max-lt/b41832d6747d9653610117b5dd02008f to your computer and use it in GitHub Desktop.
minimal chat
const net = require('net');
const isServer = process.argv[2] == 'server';
const port = process.argv[3]; // server port
const display = (data) => console.log('> ' + data.toString().trim());
let send = null;
if (isServer) {
const friends = new Set;
const server = net.createServer((socket) => {
console.log('new peer connecting');
socket.on('error', (err) => console.error('Peer error', err));
socket.on('data', (data) => (display(data), send(data)));
socket.on('end', () => (friends.delete(socket), console.log('Peer disconnected')));
friends.add(socket);
});
server.listen(port);
send = (data) => friends.forEach(f => f.write(data));
} else {
const socket = net.connect(port);
socket.on('error', (err) => console.error('Socket error', err));
socket.on('data', display);
socket.on('end', () => (console.log('Server disconnected'), process.exit(0)));
send = (data) => socket.write(data);
}
process.stdin.resume();
process.stdin.on('data', send);
@max-lt
Copy link
Author

max-lt commented Nov 10, 2017

Usage:
node . server 4567
node . client 4567

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment