使用Go编写WebAssembly网站如何编译适配gRPC Web协议?
Go环境编译gRPC Web JS库操作指南
前置准备
- 本地已安装并启动Docker服务
- 已完成
.proto接口定义,统一存放在项目的proto目录下 - Go开发环境已配置完成,可正常编译Go代码
编译操作
你找到的namely/docker-protoc镜像已经封装了protoc所有依赖插件,不需要手动安装protoc、gRPC Web插件等组件,直接挂载本地目录执行容器命令即可完成编译。
假设你的项目目录结构如下:
项目根目录 ├─ proto/ # 存放所有.proto定义文件 │ └─ api.proto └─ generated/ # 编译后JS文件输出目录,提前创建
在项目根目录下执行以下命令即可完成编译:docker run -v $(pwd):/defs namely/protoc-all -f proto/api.proto -l web -o generated/
常用参数说明
-v $(pwd):/defs:将当前本地项目根目录挂载到容器的默认工作目录-f:指定需要编译的proto文件相对路径-l web:指定输出类型为gRPC Web的JS调用库-o:指定编译产物的本地输出目录
可选配置
- 若需要输出TypeScript类型声明,可在命令中添加
--ts_out参数:docker run -v $(pwd):/defs namely/protoc-all -f proto/api.proto -l web --ts_out -o generated/ - 若你的proto依赖第三方公共proto定义(如google官方的annotations.proto),可额外挂载依赖proto的本地目录到容器的include路径:
docker run -v $(pwd):/defs -v 你的第三方proto根目录:/usr/include namely/protoc-all -f proto/api.proto -l web -o generated/
后续接入说明
- 编译输出的JS文件可直接导入到Wasm项目的JS桥接层调用
- Go后端侧可直接使用
grpcweb包封装原生gRPC服务,无需额外部署反向代理即可直接响应浏览器端的gRPC Web请求
内容的提问来源于stack exchange,提问作者Lorenzo Tinfena
相关产品推荐
相关产品推荐

