google protobuf_websoket解析protobuf协议

自己团队(腾讯/看点/搜索)长期招聘web前端、c++后台、搜索/推荐算法,欢迎来撩,lucaspei@tencent.com。

---------------------------------------------------------------------

由于业务需要,需要用websoket并使用protobuf协议,在网上找了很多,资料很少。

总结下来前端要解析protobuf主要有两种方式:

1.把proto文件通过工具生成js文件,然后加上依赖运行,代表库:https://github.com/google/protobuf

2.直接在线加载proto文件,实时解析数据,代表库:https://github.com/dcodeIO/protobuf.js

方式二我没用过,但性能肯定没有第一种好,再就是据说有一些坑,我这里主要讲一下第一种方式。

最主要的步骤为:

  1. 书写proto协议文件,比如名为user.proto;
  2. 使用谷歌官方的工具把proto文件生成对应的js文件,user_pb.js;
  3. 通过browserify把user_pb,js加上依赖后打包生成im.js;
  4. 把二进制的ArrayBuffer数据反序列化,deserializeBinary(BINARY_DATA)

测试步骤一,书写proto,并命名为user.proto

syntax 

测试步骤二,转化proto文件为对应的js:

https://github.com/google/protobuf/releases这里下载转化工具

ad8c2b54426292f7fd2f9c8bbdc522d3.png

把刚刚写的user.proto放到bin目录下去,然后敲命令:protoc.exe --js_out=import_style=commonjs,binary:. user.proto,这样就会在同目录下生成一个叫user_pb.js的js文件,大概长这样:

47a777ee82cc0c48d9328ef88f0305c9.png

测试步骤三,打包user_pb.js为前端可用的带依赖的js文件:

全局安装browserify,tnpm install -g browserify

新建一个目录,里面放一个package.json,

ef75da048f8bcc3dcd0f39ec267babd9.png

,然后执行tnpm install安装google-protobuf依赖,把第二部生成的user_pb.js文件放到这个目录下来:

7cb633a441a18c71b3d2d42263f43b54.png

,然后通过cmd执行browserify user_pb.js -o im.js,最后就会在这个目录下生成一个im.js文件,到此为止,转化proto文件完成。

-----------------------------------------------------------------------------------------------

然后可以自己写一个server来测试一下,server的代码如下(由于只是测试用途,代码比较简单粗暴):

81a7e22d4b95eb76495f322278699587.png

然后添加前端的页面index.html

aa055f926a37508895bfb77680c66d8f.png

切记:一定要加上ws.binaryType = 'arraybuffer'这一句

最后发送消息看下:

8c13c3f7f8ea15c5aa8c066bda17b477.png

解析成功,大功告成。

PS: 两年前的文章, ctr c/v 过来的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值