Skip to content

Commit c1ed458

Browse files
committed
Add configuration of keepalive on Android
1 parent d68160d commit c1ed458

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

android/src/main/java/com/reactnativegrpc/GrpcModule.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import java.util.HashMap;
1717
import java.util.Map;
18+
import java.util.concurrent.TimeUnit;
1819

1920
import io.grpc.CallOptions;
2021
import io.grpc.ClientCall;
@@ -33,6 +34,10 @@ public class GrpcModule extends ReactContextBaseJavaModule {
3334
private boolean withCompression = false;
3435
private String compressorName = "";
3536
private Integer responseSizeLimit = null;
37+
private boolean keepAliveEnabled = false;
38+
private Integer keepAliveTime;
39+
private Integer keepAliveTimeout;
40+
3641
private ManagedChannel managedChannel = null;
3742

3843
public GrpcModule(ReactApplicationContext context) {
@@ -76,6 +81,12 @@ public void setResponseSizeLimit(int limit) {
7681
this.responseSizeLimit = limit;
7782
}
7883

84+
public void setKeepalive(boolean enabled, int time, int timeout) {
85+
this.keepAliveEnabled = enabled;
86+
this.keepAliveTime = time;
87+
this.keepAliveTimeout = timeout;
88+
}
89+
7990
@ReactMethod
8091
public void unaryCall(int id, String path, ReadableMap obj, ReadableMap headers, final Promise promise) {
8192
ClientCall call = this.startGrpcCall(id, path, MethodDescriptor.MethodType.UNARY, headers);
@@ -300,6 +311,13 @@ private ManagedChannel getManagedChannel() {
300311
channelBuilder = channelBuilder.usePlaintext();
301312
}
302313

314+
if (this.keepAliveEnabled) {
315+
channelBuilder = channelBuilder
316+
.keepAliveWithoutCalls(true)
317+
.keepAliveTime(keepAliveTime, TimeUnit.SECONDS)
318+
.keepAliveTimeout(keepAliveTime, TimeUnit.SECONDS);
319+
}
320+
303321
managedChannel = channelBuilder.build();
304322
return managedChannel;
305323
}

0 commit comments

Comments
 (0)