From fcd1c324c0849f5bac6bb95f9c4c02139800bab5 Mon Sep 17 00:00:00 2001 From: dmytrohryshchenko Date: Thu, 25 Jun 2020 12:51:44 +0300 Subject: [PATCH] Optional keepAlive and lifetime in RSocket gateway --- .../src/createGatewayProxy.ts | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/rsocket-ws-gateway/src/createGatewayProxy.ts b/packages/rsocket-ws-gateway/src/createGatewayProxy.ts index adc35f4e..cdee15c8 100644 --- a/packages/rsocket-ws-gateway/src/createGatewayProxy.ts +++ b/packages/rsocket-ws-gateway/src/createGatewayProxy.ts @@ -8,23 +8,31 @@ interface Proxy { [state: string]: any; } +type ConnectionOptions = Partial<{ + keepAlive: number; + lifetime: number; +}> + export function createGatewayProxy( url: string, definition: MicroserviceApi.ServiceDefinition, requestResponse?: any, - requestStream?: any + requestStream?: any, + options?: ConnectionOptions ): Promise; export function createGatewayProxy( url: string, definition: MicroserviceApi.ServiceDefinition[], requestResponse?: any, - requestStream?: any + requestStream?: any, + options?: ConnectionOptions ): Promise; export function createGatewayProxy( url: string, definitions: any, customRequestResponse?: any, - customRequestStream?: any + customRequestStream?: any, + options?: ConnectionOptions ): any { const isDefinitionsArray = Array.isArray(definitions); let defs: MicroserviceApi.ServiceDefinition[]; @@ -36,7 +44,7 @@ export function createGatewayProxy( const proxies: Proxy[] = []; let socket; return new Promise(async (resolve, reject) => { - socket = await connect(url).catch((e) => { + socket = await connect(url, options).catch((e) => { reject(e); }); @@ -67,14 +75,14 @@ export function createGatewayProxy( }); } -const connect = (url) => { +const connect = (url, options: ConnectionOptions = {}) => { return new Promise((resolve, reject) => { const client = new RSocketClient({ serializers: JsonSerializers, setup: { dataMimeType: 'application/json', - keepAlive: 100000, - lifetime: 100000, + keepAlive: options.keepAlive || 100000, + lifetime: options.lifetime || 100000, metadataMimeType: 'application/json', }, transport: new RSocketWebSocketClient({ url }),