Skip to content

Instantly share code, notes, and snippets.

@umidjons
Created August 18, 2016 08:29
Show Gist options
  • Save umidjons/dbad7723e15e89bb634991f974ad9a63 to your computer and use it in GitHub Desktop.
Save umidjons/dbad7723e15e89bb634991f974ad9a63 to your computer and use it in GitHub Desktop.
Socket client/server example

Socket client/server example

File server.js:

'use strict';

var net = require('net');

const PORT = 3000;

var server = net.createServer((conn) => {
    console.log('connected');

    conn.on('data', (data) => {
        console.log(data.toString(), 'from', conn.remoteAddress, ':', conn.remotePort);
        conn.write('Repeating:' + data);
    });

    conn.on('close', () => {
        console.log('Client', conn.remoteAddress, ':', conn.remotePort, 'closed connection');
    });
}).listen(PORT);

server.on('listening', () => {
    console.log('listening on port', PORT);
});

server.on('error', (err) => {
    if (err.code == 'EADDRINUSE') {
        console.warn('Address in use, retrying...');
        setTimeout(() => {
            server.close();
            server.listen(PORT);
        }, 2000);
    } else {
        console.error(err);
    }
});

File client.js:

'use strict';

var net = require('net');
var client = net.Socket();

const HOST = 'localhost';
const PORT = 3000;

client.setEncoding('utf8');

client.connect(PORT, HOST, () => {
    console.log('connected to the server');
    client.write('Test from the client.');
});

process.stdin.on('data', (data) => {
    client.write(data);
});

client.on('data', (data) => {
    console.log(data);
});

client.on('close', () => {
    console.log('connection is closed');
});

Sample output

server:

listening on port 3000
connected
Test from the client. from ::ffff:127.0.0.1 : 3415
hello world
 from ::ffff:127.0.0.1 : 3415
how are you?
 from ::ffff:127.0.0.1 : 3415

client:

connected to the server
Repeating:Test from the client.
hello world
Repeating:hello world

how are you?
Repeating:how are you?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment