From 8dba9c72e8cb2b5de545a9d1f25eb9988ace4cad Mon Sep 17 00:00:00 2001 From: tuyennhv Date: Wed, 12 Apr 2023 23:31:34 +0700 Subject: [PATCH] feat: add socket backlog option (#263) --- src/index.ts | 7 +++++++ src/listener.ts | 4 +++- src/utils.ts | 4 ++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index 243452a..0b65271 100644 --- a/src/index.ts +++ b/src/index.ts @@ -36,6 +36,12 @@ export interface TCPOptions { */ maxConnections?: number + /** + * Parameter to specify the maximum length of the queue of pending connections + * https://nodejs.org/dist/latest-v18.x/docs/api/net.html#serverlisten + */ + backlog?: number + /** * Close server (stop listening for new connections) if connections exceed a limit. * Open server (start listening for new connections) if connections fall below a limit. @@ -215,6 +221,7 @@ class TCP implements Transport { return new TCPListener({ ...options, maxConnections: this.opts.maxConnections, + backlog: this.opts.backlog, closeServerOnMaxConnections: this.opts.closeServerOnMaxConnections, socketInactivityTimeout: this.opts.inboundSocketInactivityTimeout, socketCloseTimeout: this.opts.socketCloseTimeout, diff --git a/src/listener.ts b/src/listener.ts index 617f08a..208ce4e 100644 --- a/src/listener.ts +++ b/src/listener.ts @@ -41,6 +41,7 @@ interface Context extends TCPCreateListenerOptions { socketInactivityTimeout?: number socketCloseTimeout?: number maxConnections?: number + backlog?: number metrics?: Metrics closeServerOnMaxConnections?: CloseServerOnMaxConnectionsOpts } @@ -269,12 +270,13 @@ export class TCPListener extends EventEmitter implements Listene const peerId = ma.getPeerId() const listeningAddr = peerId == null ? ma.decapsulateCode(CODE_P2P) : ma + const { backlog } = this.context this.status = { started: true, listeningAddr, peerId, - netConfig: multiaddrToNetConfig(listeningAddr) + netConfig: multiaddrToNetConfig(listeningAddr, { backlog }) } await this.netListen() diff --git a/src/utils.ts b/src/utils.ts index e5931c6..9cd2a92 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -8,7 +8,7 @@ const ProtoFamily = { ip4: 'IPv4', ip6: 'IPv6' } export type NetConfig = ListenOptions | (IpcSocketConnectOpts & TcpSocketConnectOpts) -export function multiaddrToNetConfig (addr: Multiaddr): NetConfig { +export function multiaddrToNetConfig (addr: Multiaddr, config: NetConfig = {}): NetConfig { const listenPath = addr.getPath() // unix socket listening @@ -22,7 +22,7 @@ export function multiaddrToNetConfig (addr: Multiaddr): NetConfig { } // tcp listening - return addr.toOptions() + return { ...addr.toOptions(), ...config } } export function getMultiaddrs (proto: 'ip4' | 'ip6', ip: string, port: number): Multiaddr[] {