1. 定义 .proto 文件
首先,创建一个 .proto 文件,定义服务和消息:
syntax = "proto3";
package helloworld;
service greeter {
rpc sayhello (hellorequest) returns (helloreply) {}
rpc sayhelloagain (hellorequest) returns (helloreply) {}
}
message hellorequest {
string name = 1;
}
message helloreply {
string message = 1;
}### 2. 实现服务器
创建 `greeter_server.js` 文件,包含服务的实现:
```javascript
const grpc = require('@grpc/grpc-js');
const protoloader = require('@grpc/proto-loader');
const packagedefinition = protoloader.loadsync('helloworld.proto', {
keepcase: true,
longs: string,
enums: string,
defaults: true,
oneofs: true
});
const helloproto = grpc.loadpackagedefinition(packagedefinition).helloworld;
function sayhello(call, callback) {
callback(null, { message: 'hello ' + call.request.name });
}
function sayhelloagain(call, callback) {
callback(null, { message: 'hello again, ' + call.request.name });
}
function main() {
const server = new grpc.server();
server.addservice(helloproto.greeter.service, { sayhello: sayhello, sayhelloagain: sayhelloagain });
server.bindasync('0.0.0.0:50051', grpc.servercredentials.createinsecure(), () => {
server.start();
});
}
main();3. 实现客户端
创建 greeter_client.js 文件,包含客户端的实现:
const grpc = require('@grpc/grpc-js');
const protoloader = require('@grpc/proto-loader');
const packagedefinition = protoloader.loadsync('helloworld.proto', {
keepcase: true,
longs: string,
enums: string,
defaults: true,
oneofs: true
});
const helloproto = grpc.loadpackagedefinition(packagedefinition).helloworld;
function main() {
const client = new helloproto.greeter('localhost:50051', grpc.credentials.createinsecure());
client.sayhello({ name: 'world' }, (err, response) => {
if (err) console.error(err);
else console.log('greeting:', response.message);
});
client.sayhelloagain({ name: 'world' }, (err, response) => {
if (err) console.error(err);
else console.log('greeting:', response.message);
});
}
main();4. 运行服务器和客户端
确保你已经安装了所有必要的依赖:
npm install @grpc/grpc-js @grpc/proto-loader
然后,分别运行服务器和客户端:
node greeter_server.js node greeter_client.js
到此这篇关于nodejs grpc简单的例子的文章就介绍到这了,更多相关nodejs grpc例子内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论