From 42991017e9af59d6a5cb6b523228c62f1c32380e Mon Sep 17 00:00:00 2001 From: Matt Mastracci Date: Tue, 6 Jun 2023 04:29:55 -0600 Subject: feat(ext/node): Very basic node:http2 support (#19344) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit adds basic support for "node:http2" module. Not all APIs have been yet implemented, but this change already allows to use this module for some basic functions. The "grpc" package is still not working, but it's a good stepping stone. --------- Co-authored-by: Bartek IwaƄczuk --- ext/node/polyfills/net.ts | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'ext/node/polyfills/net.ts') diff --git a/ext/node/polyfills/net.ts b/ext/node/polyfills/net.ts index 2c2f5f944..79845adb2 100644 --- a/ext/node/polyfills/net.ts +++ b/ext/node/polyfills/net.ts @@ -1834,21 +1834,8 @@ function _onconnection(this: any, err: number, clientHandle?: Handle) { return; } - const socket = new Socket({ - handle: clientHandle, - allowHalfOpen: self.allowHalfOpen, - pauseOnCreate: self.pauseOnConnect, - readable: true, - writable: true, - }); - - // TODO(@bartlomieju): implement noDelay and setKeepAlive - - self._connections++; - socket.server = self; - socket._server = self; - - DTRACE_NET_SERVER_CONNECTION(socket); + const socket = self._createSocket(clientHandle); + this._connections++; self.emit("connection", socket); if (netServerSocketChannel.hasSubscribers) { @@ -2369,6 +2356,23 @@ export class Server extends EventEmitter { return !!this._handle; } + _createSocket(clientHandle) { + const socket = new Socket({ + handle: clientHandle, + allowHalfOpen: this.allowHalfOpen, + pauseOnCreate: this.pauseOnConnect, + readable: true, + writable: true, + }); + + // TODO(@bartlomieju): implement noDelay and setKeepAlive + + socket.server = this; + socket._server = this; + + DTRACE_NET_SERVER_CONNECTION(socket); + } + _listen2 = _setupListenHandle; _emitCloseIfDrained() { -- cgit v1.2.3