首頁  >  文章  >  web前端  >  nodejs搭建grpc

nodejs搭建grpc

PHPz
PHPz原創
2023-05-25 15:19:081235瀏覽

前言

gRPC 是Google開源的高效能跨語言RPC 框架,它的目標是讓客戶端應用像呼叫本地函數一樣呼叫伺服器端的方法,支援多種程式語言,包括:C 、 Python、Java、Go、Node.js 等語言。

在Node.js 中使用gRPC 可以極大地方便我們進行服務端和客戶端的交互,並且在保證高性能的同時,也可以提供資料安全和保密性,本文將介紹如何使用Node. js 搭建gRPC 服務端和客戶端。

第一步:安裝 Node.js 和 gRPC

首先,需要確保本機已經安裝了 Node.js 和 npm。然後,在終端機輸入以下指令安裝 gRPC:

npm install -g grpc

安裝完成後,你可以在 package.json 檔案中看到 gRPC 的版本資訊。

nodejs搭建grpc

第二步:定義.proto檔案

gRPC 透過proto-file 定義服務,該檔案用於定義服務的介面、訊息格式等等。下面我們先定義一個簡單的服務,讓客戶端向服務端發送一個訊息,收到訊息後傳回一個已修改的訊息。建立一個名為example.proto 的文件,定義以下內容:

syntax = "proto3";

package example;

service Example {
  rpc ModifyMessage (Message) returns (Message){}

}
message Message {
  string content = 1;
}

第三步:產生程式碼

在example.proto 檔案所在的目錄中執行下列指令,產生對應的程式碼:

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 產生Node.js 所需的程式碼,並指定了輸出目錄。

產生的程式碼包括:example_pb.js 和 example_grpc_pb.js。

第四步:實作服務端

伺服器端程式碼如下:

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();

在這個範例中,服務端新建了一個grpc 伺服器,並在該伺服器上新增了一個名為modifyMessage 的方法。此方法接收一個 Message 物件作為參數,將 Message 物件中的 content 欄位轉換為大寫並傳回。

最後,我們使用 bind() 方法將服務綁定到 localhost:50051,並啟動伺服器。

第五步:實作客戶端

客戶端程式碼如下:

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());
});

在這個範例中,我們建立了一個ExampleClient 對象,並使用它的modifyMessage()方法向服務端傳送一個Message 物件。最後,我們輸出服務端的回應,該回應已經將字串中的字母轉換為大寫字母。

第六步:執行服務

現在,我們只需要在伺服器程式碼所在的目錄中使用以下命令啟動服務:

node server.js

然後,在客戶端程式碼所在的目錄中執行以下命令:

node client.js

你應該會看到以下輸出:

Modified message:  HELLO WORLD!

至此,我們已經成功地實現了一個基礎的gRPC 服務端和客戶端的互動過程。

總結

本文介紹如何使用 Node.js 建立 gRPC 服務端和客戶端,並在建立服務和建立連線之間使用 protobuf 定義了資料結構和訊息格式。 gRPC 是一個功能強大的跨語言 RPC 框架,對於需要在客戶端和服務端之間快速傳輸資料的應用非常有用。

以上是nodejs搭建grpc的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn