UNPKG

syslog-portal

Version:
46 lines 1.64 kB
import { randomUUID } from 'node:crypto'; import { BaseServer } from './baseServer.js'; import { createServer } from 'node:net'; export class TCPServer extends BaseServer { _server; _connections = new Set(); _checkIn; startListening() { this._server = createServer(); this._server?.listen(this._port); this._server?.on('connection', (clientSocket) => { this._connections.add(clientSocket); clientSocket.on('close', () => { this._connections.delete(clientSocket); }); clientSocket.on('end', () => { clientSocket.end(); }); clientSocket.on('data', (buffer) => { this.parseMessage(buffer, { address: clientSocket.remoteAddress, port: clientSocket.remotePort, family: clientSocket.remoteFamily, }); }); }); this._entityId = randomUUID(); this._healthMonitor.register(this._entityId, 'TCPServer', 20000); this._checkIn = setInterval(this.pingMonitor.bind(this), 15000); return Promise.resolve(); } close() { if (this._checkIn) clearInterval(this._checkIn); this._healthMonitor.unregister(this._entityId); return new Promise((resolve, reject) => { this._server?.close((err) => { if (err) return reject(err); return resolve(); }); this._connections.forEach((c) => c.end()); }); } } //# sourceMappingURL=tcpServer.js.map