ProtocolBuffer的简单使用

时间:2020-12-05 03:59:07

ProtocolBuffer的简单使用

最近在利用Socket来实现直播APP中的数据的交互,刚开始是使用字符串来实现数据的传输,特别不方便,后面在某个地方了解到ProtocolBuffer这个框架能够使得数据传输面向对象化,便于传输和解析,于是记录一下ProtocolBuffer的简单使用。

首先在利用Homebrew在Mac上面安装这个环境,生成Swift代码

  • 安装Homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

出现如下界面,表示环境安装成功
ProtocolBuffer的简单使用

  • 安装protobuf
brew install protobuf

ProtocolBuffer的简单使用

我这里是之前安装好了的

创建.proto文件,利用该文件生成对应的类库文件

  1. 创建Message.proto文件
syntax = "proto2";

message UserInfo { // type = 0
required string name = 1;
required string iconUrl = 2;
required int64 level = 3;
}

message ChatMessage { // type = 1
required UserInfo userInfo = 1;
required string chatText = 2;
}

message GiftMessage { // type = 2
required UserInfo userInfo = 1;
required string giftName = 2;
required string imgUrl = 3;
required int64 imgCount = 4;
}

2.进入Message.proto所在的文件位置,利用刚才安装的环境生成对应的Swift代码

protoc Message.proto --swift_out="./"

如图所示:
ProtocolBuffer的简单使用

利用socket发送数据

   let builder = UserInfo.Builder()
builder.name = "张三"
builder.iconUrl = "iconUrl"
builder.level = 10
let data = (try! builder.build()).data()

// 消息长度
var length = data.count
let lengthData = Data.init(bytes: &length, count: 4)

// 消息类型
var msgType = 0
let typeData = Data.init(bytes: &msgType, count: 2)
let totleData = lengthData + typeData + data
// 发送数据
tcpClient.send(data: totleData)

以上便是ProtocolBuffer的简单使用了,等多的数据结构的使用到这里去研究吧传送门