protobuf前后端解析_前端后台以及游戏中使用google-protobuf详解

前端后台以及游戏中使用google-protobuf详解

[TOC]

0、什么是protoBuf

protoBuf是一种灵活高效的独立于语言平台的结构化数据表示方法,与XML相比,protoBuf更小更快更简单。你可以用定义自己protoBuf的数据结构,用ProtoBuf编译器生成特定语言的源代码,如C++,Java,Python等,目前protoBuf对主流的编程语言都提供了支持,非常方便的进行序列化和反序列化。

特点:

平台无关、语言无关。

二进制、数据自描述。

提供了完整详细的操作API。

高性能 比xml要快20-100倍

尺寸小 比xml要小3-10倍 高可扩展性

数据自描述、前后兼容

1、下载protobuf的编译器

2、配置环境变量

解压 protoc-3.5.1-osx-x86_64.zip

Mac 配置环境变量 vi ~/.bash_profile 使其配置生效source ~/.bash_profile

#protobuf

export PROTOBUF_HOME=/Users/Javen/Documents/dev/java/protobuf/protoc-3.5.1-osx-x86_64

export PATH=$PATH:$PROTOBUF_HOME/bin

Window 将bin添加到path 即可 例如:D:\protobuf\protoc-3.5.1-win32\bin

本文在Mac环境下编写 Mac与window命令唯一的区别就是需要将protoc改成protoc.exe 前提是需要添加环境变量。

3、编写一个proto文件

文件保存为chat.proto 此proto文件摘自t-io 让天下没有难开发的网络编程

syntax = "proto3";

package com.im.common.packets;

option java_package = "com.im.common.packets"; //设置java对应的package

option java_multiple_files = true; //建议设置为true,这样会每个对象放在一个文件中,否则所有对象都在一个java文件中

/**

* 聊天类型

*/

enum ChatType {

CHAT_TYPE_UNKNOW = 0;//未知

CHAT_TYPE_PUBLIC = 1;//公聊

CHAT_TYPE_PRIVATE = 2;//私聊

}

/**

* 聊天请求

*/

message ChatReqBody {

int64 time = 1;//消息发送时间

ChatType type = 2; //聊天类型

string text = 3; //聊天内容

string group = 4; //目标组id

int32 toId = 5; //目标用户id,

string toNick = 6; //目标用户nick

}

/**

* 聊天响应

*/

message ChatRespBody {

int64 time = 1;//消息发送时间

ChatType type = 2; //聊天类型

string text = 3; //聊天内容

int32 fromId = 4; //发送聊天消息的用户id

string fromNick = 5; //发送聊天消息的用户nick

i

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Protobuf3 ,可以通过自定义 option 来扩展 Protobuf3 的语法,实现一些特定的功能。在 Protobuf3 ,option 是一个关键字,用于在 .proto 文件定义选项,可以用于定义消息、枚举、服务等。以下是 Protobuf3 自定义 option 的语法详解: 1. 定义 option 在 .proto 文件,可以使用以下语法来定义 option: ``` option <option_name> = <option_value>; ``` 其,`<option_name>` 是自定义的 option 名称,`<option_value>` 是 option 的值,可以是一个字符串、数字、布尔值等。 2. 使用 option 在使用自定义 option 时,可以将其加入到消息、枚举、服务等的定义。以下是使用自定义 option 的语法: ``` <message/enum/service> <name> { option <option_name> = <option_value>; ... } ``` 其,`<message/enum/service>` 是消息、枚举、服务的类型,`<name>` 是其名称,`<option_name>` 是自定义的 option 名称,`<option_value>` 是 option 的值。 3. 解析 option 在使用自定义 option 后,可以通过解析 option 来获取其值。以下是解析 option 的语法: ``` message <name> { ... optional <option_type> <option_name> = <field_number> [(option) = <option_value>]; ... } ``` 其,`<name>` 是消息的名称,`<option_type>` 是 option 的类型,`<option_name>` 是自定义的 option 名称,`<field_number>` 是字段号,`(option) = <option_value>` 是 option 的值。 以上是 Protobuf3 自定义 option 的语法详解,希望能帮助你更好地理解和使用自定义 option。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值