Preface
gRPC is Google’s open source, high-performance cross-language RPC framework. Its goal is to allow client applications to call server-side methods just like calling local functions. It supports multiple programming languages, including: C, Languages such as Python, Java, Go, Node.js and more.
Using gRPC in Node.js can greatly facilitate our interaction between the server and the client, and while ensuring high performance, it can also provide data security and confidentiality. This article will introduce how to use Node. js to build gRPC server and client.
Step One: Install Node.js and gRPC
First, you need to ensure that Node.js and npm have been installed locally. Then, enter the following command in the terminal to install gRPC:
npm install -g grpc
After the installation is complete, you can see the version information of gRPC in the package.json file.
Step 2: Define the .proto file
gRPC defines the service through proto-file, which is used to define the service interface, message format, etc. . Next, we first define a simple service that allows the client to send a message to the server and return a modified message after receiving the message. Create a file named example.proto and define the following content:
syntax = "proto3"; package example; service Example { rpc ModifyMessage (Message) returns (Message){} } message Message { string content = 1; }
Step 3: Generate code
Run the following command in the directory where the example.proto file is located to generate the corresponding code :
grpc_tools_node_protoc --js_out=import_style=commonjs,binary:./ --grpc_out=./ --plugin=protoc-gen-grpc=`which grpc_tools_node_protoc_plugin` example.proto
grpc_tools_node_protoc is used here to generate the code required for Node.js, and the output directory is specified.
The generated code includes: example_pb.js and example_grpc_pb.js.
Step 4: Implement the server
The server-side code is as follows:
const grpc = require("grpc"); const example = require("./example_pb"); const exampleService = require("./example_grpc_pb"); const server = new grpc.Server(); function modifyMessage(call, callback) { const response = new example.Message(); response.setContent(call.request.getContent().toUpperCase()); callback(null, response); } server.addService(exampleService.ExampleService, { modifyMessage: modifyMessage, }); server.bind("localhost:50051", grpc.ServerCredentials.createInsecure()); console.log("Server running at http://localhost:50051"); server.start();
In this example, the server creates a new grpc server and adds A method named modifyMessage. This method receives a Message object as a parameter, converts the content field in the Message object to uppercase and returns it.
Finally, we use the bind() method to bind the service to localhost:50051 and start the server.
Step 5: Implement the client
The client code is as follows:
const grpc = require("grpc"); const example = require("./example_pb"); const exampleService = require("./example_grpc_pb"); const client = new exampleService.ExampleClient( "localhost:50051", grpc.credentials.createInsecure() ); const request = new example.Message(); request.setContent("Hello World!"); client.modifyMessage(request, function (err, response) { console.log("Modified message: ", response.getContent()); });
In this example, we create an ExampleClient object and use its modifyMessage() Method sends a Message object to the server. Finally, we output the response from the server, which has converted the letters in the string to uppercase letters.
Step 6: Run the service
Now, we only need to use the following command to start the service in the directory where the server code is located:
node server.js
Then, in the directory where the client code is located Run the following command in the directory:
node client.js
You should see the following output:
Modified message: HELLO WORLD!
At this point, we have successfully implemented a basic gRPC server and client interaction process.
Summary
This article introduces how to use Node.js to build gRPC server and client, and uses protobuf to define the data structure and message format between creating services and establishing connections. gRPC is a powerful cross-language RPC framework that is useful for applications that need to quickly transfer data between clients and servers.
The above is the detailed content of nodejs build grpc. For more information, please follow other related articles on the PHP Chinese website!