xLua下使用lua-protobuf
前言
protobuf作为一种通用套接字格式,各种插件里,最本质、最关键的就是基于二进制的两个操作:
1. 根据proto文件打包出二进制数据。
2. 根据二进制数据反串化出需要的数据格式。
所以其实在不同平台下需要的就是各自的解析库。作为跨平台的套接字,同版本二进制打包出来的格式必须完全一样,1里的proto文件一般也是要在项目开发中多平台通用,2里反串化的格式是当前语言和环境下的格式。在lua环境里,一般反串化出来的就是table。
由于官方并没有给lua支持,所以大家各自发挥,使用的比较多的有4种:
1. pbc-lua: 云风早期写的解析库,解析官方protoc.exe生成的pb,缺点是只解析一层。
2. sproto: 云风(真是孜孜不倦高产出)强推的第二版协议,其实已经不能完全说是proto,而是一种新套接字,只是兼容。这是他自己关于sproto的说明: https://blog.codingnow.com/2015/04/sproto_rpc.html
3. protoc-gen-lua: seanlin写的插件,这个大家用的也多,ulua,tolua的很多项目都用这个。原理是生成lua端的.lua描述文件,打包时先使用描述文件的定义来New,然后Serialize。只支持到5.1,后面就没有维护了。
4. lua-protobuf: 这个现在大家用的多,是目前在莉莉丝工作的starwing写的,这个使用起来也很简单,可以读pb,也可以直接读定义文件(性能捉急),然后直接在lua按照proto格式写table,encode就行了。
下面说说如何接入lua-protobuf插件,参考链接:
xLua官方:https://github.com/Tencent/xLua
xLua官方集成第三方库:https://github.com/chexiongsheng/build_xlua_with_libs
lua-protobuf:https://github.com/starwing/lua-protobuf
页:
[1]