在看这篇文章之前,先要做好前提工作

1、搭建一个gRPC服务:http://fenxianglu.cn/article/238
2、解析.proto文件为js文件:http://fenxianglu.cn/article/246

上面两步处理完成后,再搭建代理服务,不然前端是不能直连grpc服务的

一、安装启动

1、下载

下载地址:https://github.com/improbable...

按操作系统选择,这里以 grpcwebproxy-v0.13.0-win64.exe.zip 为例

下载完成后把 grpcwebproxy.exe 放到项目根目录即可

2、启动

到存放 grpcwebproxy.exe 目录,打开命令行,执行以下命令

> grpcwebproxy --allow_all_origins --backend_addr=localhost:50051 --run_tls_server=false --server_http_debug_port=5005
time="2020-09-09T11:16:09+08:00" level=info msg="parsed scheme: \"\"" system=system
time="2020-09-09T11:16:09+08:00" level=info msg="scheme \"\" not registered, fallback to default scheme" system=system
time="2020-09-09T11:16:09+08:00" level=info msg="ccResolverWrapper: sending update to cc: {[{localhost:50051 0  <nil>}] }" system=system

这样服务就启动了。

grpcwebproxy 相应参数项:

参数描述
backend_addr127.0.0.1:50051要代理的服务ip和端口
run_tls_servertrue或false是否开启tls_server,默认为true
server_http_debug_port5005http调试端口
allow_all_originstrue或false是否允许跨域,默认false
use_websocketstrue或false是否启用websockets,默认false
server_http_max_read_timeout10shttp服务最大读取超时
server_http_max_write_timeout10shttp服务最大写入超时
backend_max_call_recv_msg_size4 1024 1024传输消息最大内容限制,默认4MB

查看代理服务是否启动成功,直接访问:http://localhost:5005/

image.png

最后依据第2步解析.proto文件的介绍,在.vue script中使用

import {
  GreeterClient
} from '@/assets/protos/HelloWorld_grpc_web_pb.js';

import { HelloRequest } from '@/assets/protos/HelloWorld_pb.js';

let client = new GreeterClient('http://localhost:5005');

let helloRequest = new HelloRequest();
helloRequest.setName('tom');
helloRequest.setCity('合肥');

client.sayHello(helloRequest, {}, (err, response) => {
  console.log(err, response);
});

启动vue项目访问即可看到

image.png


anchovy
1.9k 声望89 粉丝

引用和评论

0 条评论