是否可以在grpc-nodejs服务器中启用压缩?
似乎可以实现它,因为它可以压缩/解压缩压缩的数据,但是在将响应发送回时无法压缩。
我启动了测试nodejs服务器,并使用python客户端与之交互。我使用nc
对服务器和客户端之间的交互进行了MITM编辑,以获取传输的字节数,并查看压缩的效果。
当我通过python客户端发出请求时发送了'grpc.default_compression_algorithm'
元数据时,我能够看到客户端发送的数据已压缩,但服务器发送回的数据却未压缩。 (sent 815, rcvd 300324
用于echo grpc服务。
在nodejs服务器端设置元数据无济于事,它仍然会发送未压缩的数据。
之所以我认为应该可行,是因为它能够读取压缩的请求。 npm grpc软件包也是grpc二进制文件的包装。运行nm grpc_node.node | grep gzip
返回
0000000000306800 d grpc_stream_compression_gzip_vtable
00000000000b2fd0 t _ZL10gzip_flateP36grpc_stream_compression_context_gzipP17grpc_slice_bufferS2_PmmiPb
00000000000b3670 t _ZL25grpc_stream_compress_gzipP31grpc_stream_compression_contextP17grpc_slice_bufferS2_Pmm29grpc_stream_compression_flush
00000000000b3600 t _ZL27grpc_stream_decompress_gzipP31grpc_stream_compression_contextP17grpc_slice_bufferS2_PmmPb
00000000000b2ed0 t _ZL43grpc_stream_compression_context_create_gzip30grpc_stream_compression_method
00000000000b2e70 t _ZL44grpc_stream_compression_context_destroy_gzipP31grpc_stream_compression_context
答案 0 :(得分:0)
设置此项对我有用。
let server = new grpc.Server({
'grpc.default_compression_level': 2, // (1->Low -- 3->High)
});