golang 使用protobuf

news/2024/4/27 20:39:27/文章来源:https://blog.csdn.net/arethusa69/article/details/137016697
1.下载protobuf的编译器,安装到系统设置环境变量
地址:https://github.com/protocolbuffers/protobuf/releases
下载对应的编译器
2.安装库文件 二选一
go get github.com/golang/protobuf/proto
go get github.com/gogo/protobuf/proto
安装go语言插件
go install github.com/gogo/protobuf/protoc-gen-gogo
生成命令protoc --gogo_out=. ./*.proto  当前目录下的协议输出到当前

协议格式

syntax = "proto3";
package protocol;message Message {string avatar = 1;       //头像string fromUsername = 2; // 发送消息用户的用户名string from = 3;         // 发送消息用户uuidstring to = 4;           // 发送给对端用户的uuidstring content = 5;      // 文本消息内容int32 contentType = 6;   // 消息内容类型:1.文字 2.普通文件 3.图片 4.音频 5.视频 6.语音聊天 7.视频聊天string type = 7;         // 消息传输类型:如果是心跳消息,该内容为heatbeat,在线视频或者音频为webrtcint32 messageType = 8;   // 消息类型,1.单聊 2.群聊string url = 9;          // 图片,视频,语音的路径string fileSuffix = 10;  // 文件后缀,如果通过二进制头不能解析文件后缀,使用该后缀bytes file = 11;         // 如果是图片,文件,视频等的二进制
}

前端生成文件

1.安装库

npm install protobufjs

2.生成protoc的js文件到目录

npx pbjs -t json-module -w commonjs -o src/chat/proto/proto.js src/chat/proto/*.proto

src/chat/proto/proto.js 是生成的文件的目录路径及其文件名称

src/chat/proto/*.proto 是自己写的字段等

npx pbjs  -t json message.proto --es6 "proto.js"
npx pbjs  -t json message.proto --ts "proto.ts" 

使用

msg := &protocol.Message{}
proto.Unmarshal(message, msg)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1026668.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见的三种办公室租赁方式各自优缺点

商业办公的租赁市场。找商业办公地点,跟找住宅租房有点像,但目的和要求不同。主要也是三种方式:直接找房东租、接手别人的转租,或者找中介帮忙。每种方式都有它的小窍门和注意事项。 直租 直租商业办公,就是直接和办公…

GPT提示词分享 —— 代码释义者

提示词👇 我希望你能充当代码解释者,阐明代码的语法和语义。 3.5版本👇 free2gpt 4.0版本👇 gpt4

互联网医院APP开发攻略:搭建智能医疗平台

互联网医院APP为患者提供了便捷的就医途径,还为医生和医院提供了更加高效的服务和管理手段。接下来,小编将我们本文将就互联网医院APP的开发攻略,以及如何搭建智能医疗平台进行探讨。 1.确定需求和目标 这包括确定服务对象(患者、…

鸿蒙HarmonyOS应用开发之C/C++标准库机制概述

OpenHarmony NDK提供业界标准库 libc标准库、 C标准库 ,本文用于介绍C/C标准库在OpenHarmony中的机制,开发者了解这些机制有助于在NDK开发过程中避免相关问题。 1. C兼容性 在OpenHarmony系统中,系统库与应用Native库都在使用C标准库&#…

基于springboot实现房屋租赁管理系统项目【项目源码+论文说明】

基于springboot实现房屋租赁系统演示 摘要 房屋是人类生活栖息的重要场所,随着城市中的流动人口的增多,人们对房屋租赁需求越来越高,为满足用户查询房屋、预约看房、房屋租赁的需求,特开发了本基于Spring Boot的房屋租赁系统。 …

Sublime for Mac 使用插件Terminus

1. 快捷键打开命令面板 commandshiftp2. 选择 Package Control: Install Package,然后会出现安装包的列表 3. 在安装终端插件前,我们先装个汉化包,ChineseLocallization,安装完重启 4. 输入 terminus,选择第一个&am…

瑞吉外卖实战学习--登录功能的开发

登录功能的开发 前端1、创建实体类Employee和employee表进行映射,可以直接导入资料中提供的实体类1.1、字段名称对应上,有下划线的使用驼峰对应,因为在配置文件中进行了配置1.2、employee 文件 2、创建Controller、Service、Mapper2.1、Mapper文件2.2、定…

利用机器学习打造反电信诈骗系统

利用机器学习打造反电信诈骗系统 技术与功能数据集与模型可视化分析与词云结语 随着互联网的普及,电信诈骗日益猖獗,给人们的生活和财产安全带来了巨大的威胁。为了有效应对这一挑战,我们开发了一款基于机器学习的反电信诈骗系统,…

从后端到前端

原文地址:从后端到前端 - Pleasure的博客 下面是正文内容: 前言 在前面几章中主要介绍了系统开发的后端部分,但是验证接口的适用性只能通过专门的软件(Apifox,Postman等)来进行测试。那从现在开始&#xf…

mysql公用表表达式CTE

公用表达式是MySQL8.0的新特性,它是一个命名的临时结果集,作用范围是当前语句。 可以理解成为当前sql语句定义了一个视图,sql语句的任何地方都可以使用这个视图,如果被多次使用就体现出了公用表达式的特点公用。 依据语法结构和执…

【Linux】进程>环境变量地址空间进程调度

主页:醋溜马桶圈-CSDN博客 专栏:Linux_醋溜马桶圈的博客-CSDN博客 gitee:mnxcc (mnxcc) - Gitee.com 目录 1.环境变量 1.1 基本概念 1.2 常见环境变量 1.3 查看环境变量方法 1.4 和环境变量相关的命令 1.5 环境变量的组织方式 1.6 通…

Sodinokibi勒索病毒,BTC钱包地址被曝光

Sodinokibi勒索病毒在国内首次被发现于2019年4月份,2019年5月24日首次在意大利被发现,在意大利被发现使用RDP攻击的方式进行传播感染,这款病毒被称为GandCrab勒索病毒的接班人,从样本逆向分析的角度,可以看到Sodinokib…

发展规划--IM系统

1、时代背景 5G应用,多终端应用,物联网应用,小程序,工业互联,大数据应用等等大前端时代的到来,程序员不能只关注crud,因为以后的服务并发量只会越来越多。 高并发架构师、大数据架构师或者说j…

【Git篇】复习git

文章目录 🍔什么是git⭐git和svn的区别 🍔搭建本地仓库🍔克隆远程仓库🛸git常用命令 🍔什么是git Git是一种分布式版本控制系统,它可以追踪文件的变化、协调多人在同一个项目上的工作、恢复文件的旧版本等…

椋鸟数据结构笔记#2:复杂度

萌新的学习笔记,写错了恳请斧正。 目录 复杂度 时间复杂度 空间复杂度 通过复杂度衡量算法好坏 复杂度 复杂度是衡量算法好坏的一种方式。一般分为时间复杂度和空间复杂度,分别用于衡量一个算法在运行时间长短和占据内存空间多少两方面的优劣。 一…

elasticsearch 6.8.x 索引别名、动态索引扩展、滚动索引

文章目录 引言索引别名(alias)创建索引别名查询索引别名删除索引别名重命名索引别名 动态索引(index template,动态匹配生成索引)新建索引模板新建索引并插入数据索引sys-log-202402索引sys-log-202403索引sys-log-202…

C语言例4-3:复合语句,输出a,b的值

代码如下&#xff1a; //复合语句&#xff0c;输出a,b的值 #include<stdio.h> int main(void) {int a 10;printf("a %d\n",a);{int b20; //复合语句printf("b %d\n",b); //复合语句中的数据定义语句放在其他语句的前面}return …

uniapp实现单选组件覆盖选中样式

uniapp实现单选组件覆盖选中样式 完整代码&#xff1a; <!-- 是否选择组件: trueOfFalseChooseBtn --> <template><view class"is-true-body"><view class"btn-con" :class"isTrue ? btn-con-active : " click"clic…

42 ajax 下载文件未配置 responseType blob 导致的文件异常

前言 这是一个最近的关于文件下载碰到的一个问题 主要的情况是, 基于 xhr 发送请求, 获取下载的文件 然后 之后 xhr 这边拿到 字节序列之后, 封装 blob 来进行下载 然后 最开始我们这边没有配置 responseType 为 blob, arraybuffer, 然后 导致下载出来的 文件大小超过了…

前端Web移动端学习day05

移动 Web 第五天 响应式布局方案 媒体查询Bootstrap框架 响应式网页指的是一套代码适配多端&#xff0c;一套代码适配各种大小的屏幕。 共有两种方案可以实现响应式网页&#xff0c;一种是媒体查询&#xff0c;另一种是使用bootstrap框架。 01-媒体查询 基本写法 max-wid…