@@ -30,6 +30,8 @@ public class GrpcModule extends ReactContextBaseJavaModule {
3030
3131 private String host ;
3232 private boolean isInsecure = false ;
33+ private boolean withCompression = false ;
34+ private String compressorName = "" ;
3335 private Integer responseSizeLimit = null ;
3436 private ManagedChannel managedChannel = null ;
3537
@@ -63,6 +65,12 @@ public void setInsecure(boolean insecure) {
6365 this .isInsecure = insecure ;
6466 }
6567
68+ @ ReactMethod
69+ public void setCompression (Boolean enable , String compressorName ) {
70+ this .withCompression = enable ;
71+ this .compressorName = compressorName ;
72+ }
73+
6674 @ ReactMethod
6775 public void setResponseSizeLimit (int limit ) {
6876 this .responseSizeLimit = limit ;
@@ -161,6 +169,10 @@ private ClientCall startGrpcCall(int id, String path, MethodDescriptor.MethodTyp
161169
162170 CallOptions callOptions = CallOptions .DEFAULT ;
163171
172+ if (!this .compressorName .isEmpty ()) {
173+ callOptions = callOptions .withCompression (this .compressorName );
174+ }
175+
164176 ClientCall call = this .getManagedChannel ().newCall (descriptor , callOptions );
165177
166178 call .start (new ClientCall .Listener () {
@@ -246,6 +258,10 @@ public void onClose(Status status, Metadata trailers) {
246258 }
247259 }, headersMetadata );
248260
261+ if (this .withCompression ) {
262+ call .setMessageCompression (true );
263+ }
264+
249265 return call ;
250266 }
251267
0 commit comments