From bf93f0338f3e037f7581af2994688ae7bfd1ad83 Mon Sep 17 00:00:00 2001 From: Jiwoong Jung Date: Tue, 13 Aug 2024 23:51:18 +0900 Subject: [PATCH] Add grpc-es closer --- packages/grpc-es/package.json | 2 +- packages/grpc-es/src/server/server.ts | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/grpc-es/package.json b/packages/grpc-es/package.json index 1ed29ba..ff06bed 100644 --- a/packages/grpc-es/package.json +++ b/packages/grpc-es/package.json @@ -1,7 +1,7 @@ { "name": "@kanziw/grpc-es", "type": "module", - "version": "0.2.2", + "version": "0.2.3", "description": "A collection of grpc libraries using connect-es", "repository": { "type": "git", diff --git a/packages/grpc-es/src/server/server.ts b/packages/grpc-es/src/server/server.ts index 7527fe6..cb1a673 100644 --- a/packages/grpc-es/src/server/server.ts +++ b/packages/grpc-es/src/server/server.ts @@ -9,6 +9,7 @@ import type { Interceptor } from './types.js' export class GrpcEsServer { private interceptors: Interceptor[] = [] private services: { service: ServiceType; implementation: ServiceImpl }[] = [] + private http2Server: http2.Http2Server | null = null constructor(private options?: Partial) {} @@ -37,7 +38,7 @@ export class GrpcEsServer { } listenAndServe(port: number): void { - http2 + this.http2Server = http2 .createServer( connectNodeAdapter({ routes: (router) => { @@ -49,6 +50,17 @@ export class GrpcEsServer { ) .listen(port) } + + async close(): Promise { + const server = this.http2Server + if (!server) { + return + } + + return new Promise((resolve, reject) => { + server.close((err) => (err ? reject(err) : resolve())) + }) + } } function makeUnimplementedService(service: Service): ServiceImpl {