我的教程是用protobuf生成了proto.js文件
1稿存、運(yùn)行npm install protobufjs --save 安裝
2渔伯、拿到后臺(tái)給的proto文件泵督,在src里創(chuàng)建一個(gè)proto目錄局雄,用于存放proto文件及編譯后的js文件
proto
package school;
syntax = "proto3";
message PBClass {
uint64 classId = 0;
string name = 1;
}
3、運(yùn)行命令
npx pbjs -t json-module -w commonjs -o src/proto/proto.js src/proto/*.proto
image.png
生成proto.js文件渔工,如圖
4畦贸、使用
websocket返回的數(shù)據(jù)是model.data
import protoRoot from '@/proto/proto'
const BagFrameMsg = protoRoot.lookup('BagFrameMsg')//lookup括號(hào)里面的BagFrameMsg是proto文件里面的類名,問(wèn)后臺(tái)要樟凄,解析哪個(gè)類
postProtoMessage(model) {
const message = BagFrameMsg.toObject(BagFrameMsg.decode(new Uint8Array(model.data)), { enums: String, // enums as string names
longs: String, // longs as strings (requires long.js)
bytes: String, // bytes as base64 encoded strings
defaults: true, // includes default values
arrays: true, // populates empty arrays (repeated fields) even if defaults=false
objects: true, // populates empty objects (map fields) even if defaults=false
oneofs: true })
console.log('轉(zhuǎn)化后的數(shù)據(jù)============', message)
}
}