MCPcopy
hub / github.com/redis/node-redis / #createSocket

Method #createSocket

packages/client/lib/client/socket.ts:314–354  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

312 }
313
314 async #createSocket(): Promise<net.Socket | tls.TLSSocket> {
315 const socket = this.#socketFactory.create();
316
317 let onTimeout;
318 if (this.#connectTimeout !== undefined) {
319 onTimeout = () => socket.destroy(new ConnectionTimeoutError());
320 socket.once('timeout', onTimeout);
321 socket.setTimeout(this.#connectTimeout);
322 }
323
324 if (this.#isSocketUnrefed) {
325 socket.unref();
326 }
327
328 await once(socket, this.#socketFactory.event);
329
330 if (onTimeout) {
331 socket.removeListener('timeout', onTimeout);
332 }
333
334 if (this.#socketTimeout) {
335 socket.once('timeout', () => {
336 const error = this.#maintenanceTimeout
337 ? new SocketTimeoutDuringMaintenanceError(this.#maintenanceTimeout)
338 : new SocketTimeoutError(this.#socketTimeout!)
339 socket.destroy(error);
340 });
341 socket.setTimeout(this.#socketTimeout);
342 }
343
344 socket
345 .once('error', err => this.#onSocketError(err))
346 .once('close', hadError => {
347 if (hadError || !this.#isOpen || this.#socket !== socket) return;
348 this.#onSocketError(new SocketClosedUnexpectedlyError());
349 })
350 .on('drain', () => this.emit('drain'))
351 .on('data', data => this.emit('data', data));
352
353 return socket;
354 }
355
356 #onSocketError(err: Error): void {
357 const wasReady = this.#isReady;

Callers 1

#connectMethod · 0.95

Calls 4

#onSocketErrorMethod · 0.95
destroyMethod · 0.65
createMethod · 0.45
unrefMethod · 0.45

Tested by

no test coverage detected