creator中使用protobufjs

安装

sudo npm install -g protobufjs@6.8.8
pbjs -v

(不行的话:npm install semver@5.5.0再试一试)

输出版本信息 protobuf.js v6.7.0 CLI for JavaScript和相关命令

pbts -v

 

定位到.proto文件目录

单个.proto文件转js

pbjs -t static-module -w commonjs -o ChatMsg.js ChatMsg.proto

多个.proto文件转js

pbjs -t static-module -w commonjs -o CMsg_pb.js *.proto

将转的js转ts(js文件超大,ts却很小)

pbts -o CMsg_pb.d.ts CMsg_pb.js

导出的js文件超大,可以考虑去掉不用的函数。后面加入命令 --no-convert或者 --no-delimited

pbjs -t static-module -w commonjs -o ChatMsg.js ChatMsg.proto --no-convert

少了部分函数,文件会小很多,当然要确定不需要这些函数。

将导出的js和ts文件放到工程脚本文件夹下;

同时将/usr/local/lib/node_modules/protobufjs/dist/protobuf.js文件放到creator脚本文件下,导入为插件,

因为插件模式导入,可以直接使用,所以讲导出的js文件开头修改:

将文件开头

var $protobuf = require("protobufjs/minimal");

改为

var $protobuf = protobuf;

在使用的脚本文件中引用(ts工程),路径根据实际情况去设置

import { grace } from "./ChatMsg";
let tChatMsg: grace.proto.msg.ChatMsg = new grace.proto.msg.ChatMsg();

let tPlayer: grace.proto.msg.Player = new grace.proto.msg.Player();

console.log(tChatMsg);

console.log(tPlayer);

tPlayer.id = 123;

tPlayer.name = 'lisi';

tPlayer.enterTime = 12345;

console.log(tPlayer);

let tPlayerData = PbUtil.Encode('msg','Player', tPlayer);

console.log("---Player---");

console.log(tPlayerData);

PbUtil文件

import { grace } from "./ChatMsg";

export default class PbUtil {

    //packageName: package名
	//msgTypeName: 消息类型名
	static Encode(packageName, msgTypeName, data): any {
		let PackageMgr = grace.proto;
		var msgType = PackageMgr[packageName][msgTypeName];
		var msg = msgType.create(data);
		var bytes = msgType.encode(msg).finish();
		return bytes;
	}
 
	static Decode(packageName, msgTypeName, bytes): any {
		let PackageMgr = grace.proto;
		var msgType = PackageMgr[packageName][msgTypeName];
		var msg = msgType.decode(bytes);
		var data = msgType.toObject(msg, {
			longs: Number,		//long默认转换为Number类型
			enums: String,
			bytes: String,
			// see ConversionOptions
		});
		return data;
	}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值