根据proto文件生成pb和pb_service文件

2024-05-05 09:38
文章标签 pb proto service 生成

本文主要是介绍根据proto文件生成pb和pb_service文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

假如有一个HelloWorld.proto文件,内容如下:

syntax = "proto3";option java_package = "ex.grpc";
option objc_class_prefix = "HSW";package helloworld;service Greeter {rpc sayHello (HelloRequest) returns (HelloReply) {}rpc printAge (printAgeRequest) returns (printAgeReply) {}
}message HelloRequest {string name = 1;string city = 2;
}message HelloReply {string message = 1;
}message printAgeRequest {string age = 1;
}message printAgeReply {string text = 1;
}

项目需要根据proto文件生成js文件和service文件

这里需要先下载protoc.exe执行程序,下载地址:https://github.com/protocolbuffers/protobuf/releases

选择protoc-3.12.4-win64.zip下载,安装完成后需要将bin目录添加到环境变量中,然后执行命令

> protoc --version
libprotoc 3.12.4

再在项目中通过npm安装ts-protoc-gen

[project]> cnpm i ts-protoc-gen -S

接着进入到存放proto文件的目录,执行以下命令

protos> protoc --plugin="protoc-gen-ts=/nodejs/experiment/vue-test/node_modules/ts-protoc-gen/bin/protoc-gen-ts.cmd" --ts_out="service=grpc-web:./" ./HelloWorld.proto

即可生成下面四个文件:

HelloWorld_pb.js
HelloWorld_pb_service.js
HelloWorld_pb.d.ts
HelloWorld_pb_service.d.ts

在vue中使用

import { GreeterClient } from "@/assets/protos/HelloWorld_pb_service.js";
import { HelloRequest } from "@/assets/protos/HelloWorld_pb.js";const helloRequest = new HelloRequest();const client = new GreeterClient('http://127.0.0.1:50051');
client.sayHello(helloRequest, {"Content-Type": "application/grpc-web+proto"}, (err, response) => {console.log(err, response)
});

需要安装

> npm i @improbable-eng/grpc-web google-protobuf -S
import { grpc } from "@improbable-eng/grpc-web";
import { Greeter } from "@/assets/protos/HelloWorld_pb_service.js";
import { HelloRequest } from "@/assets/protos/HelloWorld_pb.js";const helloRequest = new HelloRequest();grpc.unary(Greeter.sayHello, {request: helloRequest,host: "http://127.0.0.1:50051",onMessage: (message) => {console.log(message.toObject());},onEnd: (res) => {const { status, statusMessage, headers, message, trailers } = res;if (status === grpc.Code.OK && message) {console.log("all ok. got book: ", message.toObject());}},
});

欢迎关注:http://fenxianglu.cn/

这篇关于根据proto文件生成pb和pb_service文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961389

相关文章

JAXB解析与生成XML

使用JAXB可以快速完成Java类到XML的映射,方便XML文件的解析与生成。 常用注解@ XmlRootElement(name = "Country") 将Java类或枚举类型映射成XML中根元素,设置name属性的值可指定义根元素名称,不设置则默认为类型首字母小写的名称。 @ XmlType(propOrder = {"name", "capital", "population

在centos8上生成nfs-ganesha的相关rpm

在centos8上生成nfs-ganesha的相关rpm 1.背景2.依赖环境准备2.1配置yum源2.2安装依赖包2.3拉取源代码 3编译打包3.1生成makefile3.1生成rpm 1.背景 在某些情况下,可能需要在CentOS 8上从源代码生成NFS Ganesha的RPM包,特别是当内置的软件仓库提供的NFS Ganesha版本不能满足需求时,以及在类似系统上操作,

短视频批量剪辑,智能素材文案生成,多账号授权私信回复与矩阵发布素材功能合集系统,短视频矩阵助手源码搭建部署源码开源部署方案。

目录 一、短视频矩阵助手系统是什么? 二、短视频矩阵助手系统可以为企业解决什么问题? 短视频矩阵助手可以解决哪些问题? 三、短视频矩阵助手系统功能有哪些? 四、总结 一、短视频矩阵助手系统是什么? 短视频矩阵:是指在多个短视频平台上运营不同的账号,通过发布内容和互推导流,形成品牌影响力和粉丝基础。短视频矩阵的玩法需要明确目标受众、选择合适的平台、构建多元化的内容矩阵以及与

java生成红包的简单算法

Random random = new Random();//总金额int total = 10000;//所有金额都是以分为单位的(金融界)//红包数量int num = 20;//最小红包int min = 100;List<Integer> list = new ArrayList<Integer>();int totalTmp = 0;for(int i = 0;i<num;i++){in

利用poi导出excel,并自动生成表头

之前导出excel大量重复代码,自己输入excel表头,一行一行写入太麻烦了。最新发现只要配置查询的sql语句,其他代码无需改动。废话不说了,贴代码。 注:使用原生的jdbc查询。 Workbook wb = new SXSSFWorkbook(100);// 声明一个工作薄CellStyle style = wb.createCellStyle(); // 一个样式 style.

mybatis逆向工程生成实体

一直在做项目,今天抽时间总结一下SSM框架中逆向生成实体的两种方案:     第一种是通过在eclipse中安装mybatis插件然后实现。 【准备工作】安装hibernate-tools插件 之后重启eclipse。 【打开data source explorer窗口】:eclipse工具栏中window——>show view——>other——>data sour

android动态生成表格,使用的是TABLELAYOUT

android动态生成表格,使用的是TABLELAYOUT android layout button tools table class 使用tablelayout及tablerow生成表格,这里我只生成了一次,可以根据需求更改哦....,对于里面的控件是可以监听的.... mainactivity代码如下: [html]  view pl

sqlserver 练习题目(存储过程:循环erp数据表,生成另一个表数据)

– ##表结构 ### use test_db; CREATE TABLE [dbo].[GYGDFT]( [任务单号] varchar NOT NULL, [任务序号] [int] NULL, [品号] varchar NULL, [生产数量] [int] NULL, [备注] varchar NULL ) ON [PRIMARY] GO CREATE TABLE [db

一个可自动生成行排号的excel VBA小工具

如下图,点击“生成行排号”按钮即可生成想要的行排号 基本用法如下: 1、设置顺序排列的行排号(每排的行号一致,行的方向排序方向也一致) 2、设置顺序排列的行排号(行号从小到大排列,而不受排的限制) 3、设置之字排序的行排号(每排的行号一致,行的方向排序方向相反) 4、设置之字排序的行排号(行号从小到大排列,而奇偶排行的方向排序方向相反) 5、其他注意事项: (1)

将页面生成的图片文件、pdf文件存储到服务器地址

将页面生成的图片文件、pdf文件存储到服务器地址,参数$url为链接地址,$filename为要生成的文件名; /*** getPdfPath获取简历生成的链接地址*/private function getPath($url, $filename){// 检查路径是否存在,如不存在则创建$dir = './upload/';if (!is_dir($dir)){//第三个参数是“true”表示