请教coco2d-js 如何使用nodejs protobuff

2054人阅读
前言介绍:
&&& 本案例主要介绍如何在js里把接收到的protobuf数据转换为对象与如何把对象转换为protobuf数据。
为了能简单说明问题,在本案例中只有js部分,关于后台服务的像前台发送数据部分在案例一中已经介绍。
环境需求:
&&&&需要github大神wiki提供的三个js文件:[本案例的下载中已经提供]
github:/dcodeIO/ProtoBuf.js/wiki
1.ByteBufferAB.min.js
&&&& 2.Long.min.js
&&&& 3.ProtoBuf.min.js
代码介绍:
itstack.proto
//个人博客:www.itstack.org//站长:付政委//QQ:&//这里是一个proto文件,我们在www.itstack.org为想象,定义它下面分为大知识点模块,每个模块下又有子模块// 父模块message ParentModule{
required int32 number = 1;
required string name = 2;
// 子模块[repeated 可重复,相当于集合]
repeated ChildrenModule childrenModule= 3;}&// 子模块message ChildrenModule{
required int32 number = 1;
required string name = 2;}
www.itstack.org.html
&!DOCTYPE html&&html xmlns=&http://www.w3.org/1999/xhtml&&&head&
&meta http-equiv=&Content-Type& content=&text/ charset=utf-8& /&&!-- 引入protobuf相关js文件 --&
&script src=&lib/Long.min.js&&&/script&
&!-- https:///dcodeIO/Long.js/master/dist/Long.min.js --&&script src=&lib/ByteBufferAB.min.js&&&/script& &!-- https:///dcodeIO/ByteBuffer.js/master/dist/ByteBufferAB.min.js --&&script src=&lib/ProtoBuf.min.js&&&/script&
&!-- https:///dcodeIO/ProtoBuf.js/master/dist/ProtoBuf.min.js --&&&!-- ProtoBuf处理 --&&script language=&javascript& type=&text/javascript&& if (typeof dcodeIO === 'undefined' || !dcodeIO.ProtoBuf) {
throw(new Error(&ProtoBuf.js is not present. Please see www/index.html for manual setup instructions.&));}// 创建ProtoBufvar ProtoBuf = dcodeIO.ProtoBuf;&// 先构造两个子模块// 子模块-1var ChildrenModule_1 = ProtoBuf.loadProtoFile(&itstack.proto&).build(&ChildrenModule&);var childrenModule_1 = new ChildrenModule_1();childrenModule_1.setNumber(1);childrenModule_1.setName(&Nginx5.0 初级案例&);&// 子模块-2var ChildrenModule_2 = ProtoBuf.loadProtoFile(&itstack.proto&).build(&ChildrenModule&);var childrenModule_2 = new ChildrenModule_2();childrenModule_2.setNumber(2);childrenModule_2.setName(&Nginx5.0 中级案例&);&// 父模块var ParentModule = ProtoBuf.loadProtoFile(&itstack.proto&).build(&ParentModule&);&// 像父模块设置值var parentModule = new ParentModule();parentModule.setNumber(1);parentModule.setName(&Nginx5.0&);parentModule.setChildrenModule(new Array(childrenModule_1,childrenModule_2));&// 打印父模块此时数据【火狐浏览器F12进行观察】console.log(&ProtoBuf对象数据:&);console.log(parentModule);&// 模拟发送// 1.对象转字节:parentModule.toArrayBuffer() // 2.字节转对象:ParentModule.decode()var msgDec = ParentModule.decode(parentModule.toArrayBuffer());// 接收到的数据:console.info(&接收到的数据:&);console.info(parentModule.toArrayBuffer());// 打印转换后的信息console.info(&经过ParentModule.decode转换后的数据:&);console.info(msgDec);&&/script&&/head&&body&&/body&&/html&
测试解图:
工程下载:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9046252次
积分:39162
积分:39162
排名:第61名
原创:669篇
转载:1884篇
评论:419条
(9)(16)(1)(9)(7)(19)(13)(9)(4)(5)(28)(12)(34)(5)(3)(13)(27)(18)(11)(3)(23)(24)(31)(42)(12)(34)(19)(37)(41)(39)(56)(146)(66)(78)(78)(6)(15)(28)(26)(17)(57)(46)(25)(41)(24)(37)(70)(73)(28)(31)(35)(49)(54)(27)(25)(16)(21)(13)(24)(26)(35)(31)(27)(6)(6)(2)(3)(3)(7)(5)(10)(4)(9)(3)(2)(12)(11)(23)(5)(1)(9)(16)(11)(14)(4)(4)(28)(17)(37)(413)(2)(7)(1)(3)(4)(7)(6)(10)(28)(9)(9)有人在node.js 里使用过google protobufbuffer吗? - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
想在node.js里使用protobufbuffer但是不知道都应该下一些什么依赖包。。。希望偶有用过的可以指点下
试试这个:
npm install protobuf
没有安装python2.7.3模块
想在node.js里使用googlebuffer还需要装python2.7.3嘛
怎么这么麻烦呢
麻烦的是windows平台。
需要安装python和VS expres2012.因为这个模块以及别的模块需要编译。
很多模块需要二进制的包,纯js搞不定的事情需要c/c++扩展,安装的时候需要编译,这在unix/linux上很容易,因为安装编译包很容或者已经自带了。
windows就不一样了。建议开发能上mac就上mac,或者linux,win真不合适。
也许你会说,为什么不编译一个好的供认下载?
这实际到二进制包的发行和管理机制了。目前npm上基本都是源码级别的。编译都是在本地进行的。
我在 Windows 上用 VirutalBox 装 Ubuntu,用起来很不错。
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的}

我要回帖

更多关于 coco2d js 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信