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
| Event | Fires |
|---|---|
connection | New client (server) |
connect | Connected (client) |
data | Bytes received |
end | FIN from peer |
close | Fully closed |
error | Socket error |
timeout | Idle timeout reached |
4. Writing Data to Socket (socket.write)
| Behavior | Detail |
|---|---|
Returns false | Buffer full → wait for drain |
| Encoding | Default UTF-8 if string |
5. Ending Connections (socket.end)
| API | Effect |
|---|---|
socket.end(data?) | Half-close after sending |
socket.end() | Send FIN |
6. Destroying Sockets (socket.destroy)
| Method | Use |
|---|---|
socket.destroy(err?) | Force close, optionally with error |
socket.destroyed | Boolean flag |
7. Getting Socket Address (socket.address)
| Property | Returns |
|---|---|
socket.address() | { address, family, port } |
socket.remoteAddress / remotePort | Peer info |
socket.localAddress / localPort | Local info |
8. Setting Socket Timeout (socket.setTimeout)
Note: Timeout fires after no activity; doesn't auto-close — handle in callback.
9. Implementing Keep-Alive (setKeepAlive)
| API | Use |
|---|---|
socket.setKeepAlive(true, ms) | OS-level TCP keepalive |
socket.setNoDelay(true) | Disable Nagle's algorithm |
10. Using Unix Sockets
| Pattern | Code |
|---|---|
| Server | server.listen("/tmp/app.sock") |
| Client | net.createConnection({ path: "/tmp/app.sock" }) |
11. Handling Socket Errors
| Code | Meaning |
|---|---|
ECONNRESET | Peer reset connection |
EPIPE | Wrote to closed socket |
EHOSTUNREACH | Routing failure |
EADDRINUSE | Port already bound |