Kind: Type
Source: packages/microservices/events/tcp.events.ts
Part of: Microservices
TCP events map for the net TCP socket. Key is the event name and value is the corresponding callback function.
TcpEvents defines the event-to-callback map used by the microservices TCP transport. It connects Node.js net.Socket lifecycle and data events—such as incoming data, connection errors, and socket closure—to the handlers responsible for processing them.
Definition
ts{ error: OnErrorCallback; connect: VoidCallback; end: VoidCallback; close: VoidCallback; timeout: VoidCallback; drain: VoidCallback; lookup: OnLookupCallback; }
Diagram
mermaidgraph LR Socket[net.Socket] -->|data| DataHandler[TcpEvents.data callback] Socket -->|error| ErrorHandler[TcpEvents.error callback] Socket -->|close| CloseHandler[TcpEvents.close callback] DataHandler --> Transport[TCP transport processing] ErrorHandler --> Transport CloseHandler --> Transport
Usage
tsimport type { Socket } from 'node:net';
import type { TcpEvents } from './tcp.events';
function registerSocketEvents(socket: Socket, events: TcpEvents): void {
for (const [eventName, callback] of Object.entries(events)) {
socket.on(eventName, callback);
}
}
const events: TcpEvents = {
data: (chunk: Buffer) => {
console.log('Received TCP payload:', chunk.toString());
},
error: (error: Error) => {
console.error('TCP socket error:', error);
},
close: () => {
console.log('TCP socket closed');
},
};
registerSocketEvents(socket, events);
AI Coding Instructions
- Keep event keys aligned with supported Node.js
net.Socketevent names and ensure each callback matches that event's argument signature. - Always provide an
errorhandler when registering TCP socket events to prevent unhandled socket errors. - Treat
datapayloads as stream chunks; buffer and frame them when application messages may span multiple chunks. - Remove listeners or release associated connection state after
closeto avoid memory leaks. - Register
TcpEventshandlers immediately after creating or accepting a socket, before writing application data.
Was this page helpful?