Language: EN

comunicacion-tcp-nodejs

How to make TCP communications with Node.js and the NET module

In Node.js, we can use the net module to create TCP servers and clients easily.

The TCP protocol provides a stable and reliable way to transmit data over the web, ensuring the ordered and error-free delivery of packets.

Some of its features are:

  • Stability: TCP establishes persistent connections between the client and the server, ensuring the ordered and error-free delivery of the transmitted data.
  • Reliability: With the mechanism of packet reception confirmation, TCP ensures that the data reaches its destination intact and in the correct order.
  • Congestion Control: TCP includes congestion control algorithms that regulate the flow of data between the ends of the connection.

TCP communication is used in a wide range of web applications, from file transfer to secure internet browsing.

Example of TCP implementation in Node.js

Basic TCP Server

To create a basic TCP server in Node.js, we can use the net module. The following example shows how to create a TCP server that listens on a specific port and handles incoming connections:

import net from 'node:net';

// Create TCP server
const server = net.createServer((socket) => {
  console.log('Client connected');

  // Event when receiving data from the client
  socket.on('data', (data) => {
    console.log('Data received:', data.toString());

    // Send data back to the client
    socket.write('Data received by the server: ' + data.toString());
  });

  // Event when the client connection is closed
  socket.on('close', () => {
    console.log('Client disconnected');
  });

  // Handle connection errors
  socket.on('error', (err) => {
    console.error('Connection error:', err);
  });
});

const port = 3000;
server.listen(port, () => {
  console.log(`TCP server started on port ${port}`);
});

In this example:

  • A TCP server is created that listens on port 3000.
  • When a client connects, a message is printed to the console.
  • When the server receives data from the client, it is printed to the console and a response is sent to the client.
  • When a client disconnects, a message is printed to the console.

To test this TCP server, you will need a client that can connect and send data. You can use a tool like telnet in the command line or write a client in JavaScript to test it 👇

TCP Client in Node.js

To connect to a TCP server from a client in Node.js, we can also use the net module. The following example shows how to create a TCP client that connects to a server on a specific host and port:

import net from 'node:net';

const client = new net.Socket();

const port = 3000;
const host = 'localhost'; // Change to the host where the server is

client.connect(port, host, () => {
  console.log('Connected to the TCP server');
  client.write('Hello from the TCP client');
});

client.on('data', (data) => {
  console.log('Data received from the server:', data.toString());
  client.end();
});

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

client.on('error', (err) => {
  console.error('Connection error:', err);
});

This TCP client will connect to the server we created earlier and send a message. When the server receives the message, it will print it to the console and send a response to the client, which will also be printed in the client’s console.

To test it,

  • Run the Node.js server
  • Run the Node.js client.
  • You should see the client connect to the server, send a message, receive a response from the server, and then disconnect.