您现在的位置是:主页 > news > 广州建外贸网站公司/培训心得体会200字
广州建外贸网站公司/培训心得体会200字
admin2025/5/20 17:37:17【news】
简介广州建外贸网站公司,培训心得体会200字,深圳企业公司做网站,eclipse可以做网站吗由于项目中用到的gRPC,抽时间翻阅了一下gRPC相关的资料,现记录一下。 gRPC是谷歌开源的,需要定义接口协议文件,该文件是使用 protocol buffers 具体格式 https://developers.google.com/protocol-buffers/docs/overview 该文件定…
广州建外贸网站公司,培训心得体会200字,深圳企业公司做网站,eclipse可以做网站吗由于项目中用到的gRPC,抽时间翻阅了一下gRPC相关的资料,现记录一下。
gRPC是谷歌开源的,需要定义接口协议文件,该文件是使用 protocol buffers
具体格式 https://developers.google.com/protocol-buffers/docs/overview 该文件定…
由于项目中用到的gRPC,抽时间翻阅了一下gRPC相关的资料,现记录一下。
gRPC是谷歌开源的,需要定义接口协议文件,该文件是使用 protocol buffers
具体格式
https://developers.google.com/protocol-buffers/docs/overview
该文件定义后,可以通过一些工具转化为可供其他语言适应的类。如java, nodejs,python,go, c++
grpc协议会将传输的数据序列化为二进制流进行传输,此外主要特点是,必须遵循严格的接口协议,调用远程的方法,就像调用本地的一样。
想要更加具体了解的可以看看这个文章
https://studygolang.com/articles/21897?fr=sidebar
定义.proto文件
syntax = "proto3";package pet;// 服务名为 Adopt
// 方法为 AdoptPet
service Adopt {rpc AdoptPet(PetRequest) returns (PetReply) {}
}// 请求时 需传递type
message PetRequest {string type = 1;
}// 返回体只包含name属性
message PetReply {string name = 1;
}
服务端文件 server.js
const PROTO_PATH = __dirname + '/pet.proto'var grpc = require('@grpc/grpc-js') // 用于创建服务的的核心库
var protoLoader = require('@grpc/proto-loader') // 用于加载,解析,序列化 proto文件的库
var packageDefinition = protoLoader.loadSync(PROTO_PATH,{keepCase: true,longs: String,enums: String,defaults: true,oneofs: true}
)var pet_proto = grpc.loadPackageDefinition(packageDefinition).pet;function AdoptPet(call, callback) {callback(null, { name: 'Tom' })
}function start() {var server = new grpc.Server();server.addService(pet_proto.Adopt.service, { AdoptPet })server.bindAsync('0.0.0.0:50052', grpc.ServerCredentials.createInsecure(), () => {server.start();})}start()
客户端client.js
var PROTO_PATH = __dirname + '/pet.proto'var grpc = require('@grpc/grpc-js')
var protoLoader = require('@grpc/proto-loader')
var packageDefinition = protoLoader.loadSync(PROTO_PATH,{keepCase: true,longs: String,enume: String,defaults: true,oneofs: true,}
)var pet_proto = grpc.loadPackageDefinition(packageDefinition).pet;function main() {var target = 'localhost:50052'var client = new pet_proto.Adopt(target, grpc.credentials.createInsecure())client.AdoptPet({ type: 'dog' }, function (error, res) {console.log('pet name:', res.name)})
}main()
需要安装 @grpc/grpc-js
, @grpc/proto-loader
两个库。