Working with Networking (net)

1. Creating TCP Server (net.createServer)

Example: Echo server

import net from "node:net";
const server = net.createServer((socket) => {
  socket.write("hi\n");
  socket.pipe(socket);
});
server.listen(7, () => console.log("echo on 7"));

2. Creating TCP Client

Example

const client = net.createConnection({ port: 7, host: "127.0.0.1" }, () => client.write("hello"));
client.on("data", (d) => { console.log(d.toString()); client.end(); });

3. Handling Connection Events

EventFires
connectionNew client (server)
connectConnected (client)
dataBytes received
endFIN from peer
closeFully closed
errorSocket error
timeoutIdle timeout reached

4. Writing Data to Socket (socket.write)

BehaviorDetail
Returns falseBuffer full → wait for drain
EncodingDefault UTF-8 if string

5. Ending Connections (socket.end)

APIEffect
socket.end(data?)Half-close after sending
socket.end()Send FIN

6. Destroying Sockets (socket.destroy)

MethodUse
socket.destroy(err?)Force close, optionally with error
socket.destroyedBoolean flag

7. Getting Socket Address (socket.address)

PropertyReturns
socket.address(){ address, family, port }
socket.remoteAddress / remotePortPeer info
socket.localAddress / localPortLocal info

8. Setting Socket Timeout (socket.setTimeout)

Example

socket.setTimeout(30_000, () => socket.end());
Note: Timeout fires after no activity; doesn't auto-close — handle in callback.

9. Implementing Keep-Alive (setKeepAlive)

APIUse
socket.setKeepAlive(true, ms)OS-level TCP keepalive
socket.setNoDelay(true)Disable Nagle's algorithm

10. Using Unix Sockets

PatternCode
Serverserver.listen("/tmp/app.sock")
Clientnet.createConnection({ path: "/tmp/app.sock" })

11. Handling Socket Errors

CodeMeaning
ECONNRESETPeer reset connection
EPIPEWrote to closed socket
EHOSTUNREACHRouting failure
EADDRINUSEPort already bound