Skip to content

Commit 28e5370

Browse files
authored
Optional keepAlive and lifetime in RSocket gateway (#251)
1 parent f0e65b3 commit 28e5370

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

packages/rsocket-ws-gateway/src/createGatewayProxy.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,31 @@ interface Proxy {
88
[state: string]: any;
99
}
1010

11+
type ConnectionOptions = Partial<{
12+
keepAlive: number;
13+
lifetime: number;
14+
}>
15+
1116
export function createGatewayProxy(
1217
url: string,
1318
definition: MicroserviceApi.ServiceDefinition,
1419
requestResponse?: any,
15-
requestStream?: any
20+
requestStream?: any,
21+
options?: ConnectionOptions
1622
): Promise<Proxy>;
1723
export function createGatewayProxy(
1824
url: string,
1925
definition: MicroserviceApi.ServiceDefinition[],
2026
requestResponse?: any,
21-
requestStream?: any
27+
requestStream?: any,
28+
options?: ConnectionOptions
2229
): Promise<Proxy[]>;
2330
export function createGatewayProxy(
2431
url: string,
2532
definitions: any,
2633
customRequestResponse?: any,
27-
customRequestStream?: any
34+
customRequestStream?: any,
35+
options?: ConnectionOptions
2836
): any {
2937
const isDefinitionsArray = Array.isArray(definitions);
3038
let defs: MicroserviceApi.ServiceDefinition[];
@@ -36,7 +44,7 @@ export function createGatewayProxy(
3644
const proxies: Proxy[] = [];
3745
let socket;
3846
return new Promise(async (resolve, reject) => {
39-
socket = await connect(url).catch((e) => {
47+
socket = await connect(url, options).catch((e) => {
4048
reject(e);
4149
});
4250

@@ -67,14 +75,14 @@ export function createGatewayProxy(
6775
});
6876
}
6977

70-
const connect = (url) => {
78+
const connect = (url, options: ConnectionOptions = {}) => {
7179
return new Promise((resolve, reject) => {
7280
const client = new RSocketClient({
7381
serializers: JsonSerializers,
7482
setup: {
7583
dataMimeType: 'application/json',
76-
keepAlive: 100000,
77-
lifetime: 100000,
84+
keepAlive: options.keepAlive || 100000,
85+
lifetime: options.lifetime || 100000,
7886
metadataMimeType: 'application/json',
7987
},
8088
transport: new RSocketWebSocketClient({ url }),

0 commit comments

Comments
 (0)