protobuf入门教程
protobuf全称Protocol Buffers,简称GPB、PB ,是QQ等IM采用的协议,比XML、XMPP(环信)、JSON、结构体等所有传输效果都高的一种传输协议,由谷歌发明,其效率一般是XML XMPP的20倍以上,JSON的10倍以上,是一种游戏中普遍采用的IM消息协议,所以你非常有必要认真读一下本博文的入门教程,并运行作者的Demo
本Demo以直播聊天室为假设的Demo,一般消息类型有50到100种左右,简单起见,这里举5种消息类型
enum MsgType : Int {
case join = 0
case leave = 1
case text = 2
case gift = 3
case heartBeat = 8
}
分别表示进入主播室离开主播室 文本消息 礼物图片或GIF动画消息及 心跳包消息,其他如广告、系统广播等不在本Demo演示
(本文要求读者有一定的socket和 swift3基础,再往下阅读)
摘要
1、制作协议格式
syntax = "proto2";
message UserInfo {
required int32 level = 1;
required string name = 2;
required string iconURL = 3;
}
2、制作协议的对象数据
fileprivate lazy var user : UserInfo.Builder = {
let user = UserInfo.Builder()
user.level = Int32(arc4random_uniform(24))
user.name = "targetcloud\(arc4random_uniform(10))"
user.iconUrl = "icon\(arc4random_uniform(2))"
return user
}()
3、剩下的IM核心代码其实只有两行,要发送消息时
let data = (try! user.build()).data()
收到消息时
UserInfo.parseFrom(data : msgData)
详细使用
1、环境安装
找到Github
https://github.com/alexeyxo/protobuf-swift
在命令行中依次执行下面代码
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install libtool
brew link libtool
brew install automake
brew install protobuf
brew install protobuf-swift
如下图
2、导入cocoapod
在podfile中加入
pod 'ProtocolBuffers-Swift'
安装pod:pod install
如下图
3、编写IMMessage.proto
syntax = "proto2"