ProtocolBuffer的简单使用

来源:互联网 发布:上海德比软件 编辑:程序博客网 时间:2024/06/05 22:40

ProtocolBuffer的简单使用

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

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

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

出现如下界面,表示环境安装成功
这里写图片描述

  • 安装protobuf
brew install protobuf

这里写图片描述

我这里是之前安装好了的

创建.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="./"

如图所示:
这里写图片描述

利用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的简单使用了,等多的数据结构的使用到这里去研究吧传送门