主要问题:
我正在寻找一种解决方案,以提高大文件的上传/下载速度。我听说过相对较新的技术gRPC。我了解这对服务器到服务器的通讯很有用,例如微服务架构。
客户
但是我需要前端(浏览器)上的文件上传/下载组件(例如 Fine uploader,jQuery文件上传插件,Resumable.js ),该文件具有gRPC支持。 我可以自己提供支持。但是我完全不知道如何以及如何以及是否有可能。 因此,我需要一个例子或建议或指向正确的方向。 不管JS端如何:香草,反应,有角度的 ...
服务器端
有关该主题的研究
请帮助或至少说这是不可能的
答案 0 :(得分:1)
是的,可以使用gRPC在浏览器和服务器之间进行通信。我建议您在实施解决方案之前进行概念验证。
gRPC使用protobuf进行通信,并且需要通信的数据封装在protobuf message
中。
gRPC Java File Download Example中的第一个答案是正确的。为了能够通过网络传输文件,您必须将其转换为bytes
。
使用他的例子,
message DataChunk {
bytes data = 1;
}
service imageService {
rpc DownloadProductImage(DownloadProductImageRequest) returns(stream DataChunk);
}
所有这些代码都应该在protofile中,并且应该使用protobuf生成器(通常是Java的maven插件)生成实现。
在提供的示例中要注意的重点是单词 stream ,这是使您能够将字节发送到服务器的方法,反之亦然。在该示例中,他正在从服务调用DownloadProductImage下载字节流。
这里是gRPC Java Basics,gRPC Concepts,Building a gRPC service with Java的好起点