简介
gRPC 是一种高性能、通用的开源 RPC 框架,可以在任何环境下连接异构系统。它由 Google 开发,并以 Apache License 2.0 许可证下开源,支持多种编程语言,包括 Java、Python、C++、Go、Ruby、Node.js 和 PHP 等。
Deno 是一个新的运行时环境,它可以在安全沙箱中运行类型脚本,它支持 JavaScript 和 TypeScript,并具有更好的性能、更好的安全性和更好的开发人员体验。
本文将介绍如何在 Deno 中使用 gRPC。
准备工作
在开始之前,请确保已经安装了 Deno,并且已经了解了 gRPC 的基本概念和用法。如果您还没有安装 Deno,请访问官方网站进行安装。
安装依赖
为了在 Deno 中使用 gRPC,我们需要安装一些依赖。请在命令行中执行以下命令:
deno install -A -n grpc_tools_node_protoc_plugin https://github.com/grpc/grpc-node/releases/latest/download/grpc_tools_node_protoc_plugin.exe
这将安装 gRPC 的 Node.js 插件,它将在后续步骤中用到。
编写 .proto 文件
gRPC 使用 .proto 文件来定义服务和消息格式。我们需要编写一个 .proto 文件来定义我们的服务。
以下是一个简单的示例:
-- -------------------- ---- ------- ------ - --------- ------- ----------- ------- ------- - --- -------- -------------- ------- ------------ -- - ------- ------------ - ------ ---- - -- - ------- ---------- - ------ ------- - -- -
在这个示例中,我们定义了一个名为 Greeter 的服务,它有一个名为 SayHello 的方法。SayHello 方法需要一个名为 HelloRequest 的参数,并返回一个名为 HelloReply 的响应。
HelloRequest 和 HelloReply 都是消息格式,它们定义了消息中的字段。
生成客户端和服务器代码
一旦我们定义了 .proto 文件,我们就可以使用 gRPC 工具来生成客户端和服务器代码。
我们需要使用以下命令:
npx grpc_tools_node_protoc --js_out=import_style=commonjs,binary:. --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin` helloworld.proto
此命令将从 helloworld.proto 文件生成客户端和服务器代码。
编写服务器代码
有了生成的服务器代码,我们就可以编写我们自己的服务器代码了。
以下是一个简单的示例代码:
-- -------------------- ---- ------- ------ - ------- ----------------- - ---- ------- ------ - ------- - ---- ----------------------- ------ - ----------- ------------ - ---- ------------------ -------- -------------- ---- --------- ---- - ----- ----- - --- ------------- ----------------------- ---------------------------- -------------- ------- - ----- ------ - --- --------- -------------------------- - -------- --- ---------------------------- ------------------------------------ ---------------
在这个示例中,我们导入了 grpc、Greeter、HelloReply 和 HelloRequest,它们都是从 .proto 文件生成的。
我们编写一个名为 sayHello 的函数来处理 SayHello 请求,它创建了一个名为 HelloReply 的响应并将消息设置为 Hello + 请求的名称。
我们创建了一个服务器实例,将我们的服务添加到实例中,并将服务器绑定到 0.0.0.0:50051 地址。
最后,我们启动服务器。
编写客户端代码
我们已经完成了服务器端的代码,我们需要编写客户端代码来调用服务器的方法。
以下是一个简单的示例代码:
-- -------------------- ---- ------- ------ - ----------- - ---- ------- ------ - ------------- - ---- ----------------------- ------ - ------------ - ---- ------------------ ----- ------ - --- -------------------------------- ------------------------------ ----- ------- - --- --------------- ------------------------- ------------------------ ------- --------- -- - -- ------- - --------------------- ------- - ----------------------------------- ---
在这个示例中,我们导入了 grpc、GreeterClient 和 HelloRequest,它们都是从 .proto 文件生成的。
我们创建了一个客户端实例,将服务器的地址设置为 localhost:50051。
然后,我们创建了一个 HelloRequest 实例,将名称设置为 World。
最后,我们调用 sayHello 方法,并在它完成时输出响应消息。
总结
通过这个例子,我们学习了如何在 Deno 中使用 gRPC,并在服务器和客户端中使用了生成的代码。您可以在自己的项目中使用 gRPC 来实现更高效、更安全的通讯。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6469d9a1968c7c53b09a5d9c