前言
gRPC 是一种高性能的远程过程调用框架,可以跨语言使用,支持多种平台。很多公司也在使用 gRPC 进行服务化架构的实现,让前端同学也学习一下是很有必要的。这里介绍一下如何使用 npm 包 grpc-sdk-client 实现前端与后端的 gRPC 通信。
安装
首先需要全局安装 grpc-tools。
npm install -g grpc-tools
然后再安装 grpc-sdk-client。
npm install grpc-sdk-client
使用
1. 定义 proto 文件
首先需要定义好 proto 文件,以便生成对应的 gRPC 代码。
-- -------------------- ---- ------- ------ - --------- ------ ------------------- - ----- ------ ------------ - ------------------- ------ -------------------- - --------------- ------- -------- ------- -------------- - --- ---------------------- ------- --------------- -- - ------- ------------ - ------ ---- - -- - ------- ------------- - ------ ------- - -- -
2. 自动生成 gRPC 代码
然后使用 grpc-tools 命令行工具,自动生成对应的 gRPC 代码。
grpc_tools_node_protoc --js_out=import_style=commonjs,binary:./grpc/ --grpc_out=./grpc/ --plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin` example.proto
上面命令将生成 example_pb.js 和 example_grpc_pb.js 两个文件。将它们放到一个文件夹中,例如 ./grpc/。
3. 实现客户端逻辑
接下来可以实现客户端逻辑,调用服务端的接口。
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ----------- - ------------------------------ ----- ----------------- - -------------------------------------------- - --------- ----- ------ ------- ------ ------- --------- ----- ------- ---- --- ----- ----------- - ------------------------------------------------------ ----- ------ - --- --------------------------------------------- ----------------------------------- -------- -------------- --------- - ----- ------- - - ----- ---- -- ------------------------ ------------- --------- - ------------------------ ------------------ ------------- ------------------ --- - -- ---- ----------------- ------------- -------- - ------------------- ----- ----------------------- --------- ---
上面代码中,我们首先使用 protoLoader 加载生成的 example.proto 文件并生成对应的 gRPC 代码。然后创建 ExampleService 的客户端 client,并调用 sayHello 方法进行请求。结果返回后能够打印出 response.message 的内容。
4. 实现服务器端逻辑
最后实现服务器端逻辑,实现 SayHello 接口。
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ----------- - ------------------------------ ----- ----------------- - -------------------------------------------- - --------- ----- ------ ------- ------ ------- --------- ----- ------- ---- --- ----- ----------- - ------------------------------------------------------ -------- -------------- --------- - --------------------- -- ---------- -------------- ----- ------- - ------- - - ------------------ -------------- - -------- ------- --- - -------- ------ - ----- ------ - --- -------------- ----------------------------------------------------- - --------- --------- --- ---------------------------- ----------------------------------------- ------------------- ------- -- ----------------------- --------------- - -------
上面代码中,我们首先加载了生成的 example.proto 文件,并创建了 ExampleService 的实现类。然后实现 SayHello 方法,用来对客户端的请求进行响应。最后,我们创建了一个 grpc.Server,并注册了 ExampleService 的 service 和 sayHello 方法,并启动服务绑定在 0.0.0.0:50051 上。
总结
通过上面这个简单的例子,我们能够初步认识 gRPC 的使用流程。使用 npm 包 grpc-sdk-client,我们可以简单地在前端使用 gRPC,实现高性能和跨语言交互的需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055eb381e8991b448dc57e