首页 > 代码库 > protobuf简单测试应用

protobuf简单测试应用

protobuf是google推出的一种数据交换协议,比较适合应用于底层服务交互,nodejs提供protobufjs包的实现,下面是一个简单的测试demo:

首先是.proto文件:

package desktop;syntax = "proto3";message helloworld{    required int32 id = 1;      // id    required string str = 2;    // str    optional int32 opt = 3;     // optional field}

然后是一个测试的nodejs程序,主要是加载.proto文件->实例化message->message buffer化->将buffer保存进log文件:

var ProtoBuf = require("protobufjs");var PORT = 33333;var HOST = ‘127.0.0.1‘;var fs = require(‘fs‘);var root = ProtoBuf.loadSync("./desktop.helloworld.proto"),    HelloWorld = root.lookupType("desktop.helloworld");var hw = {    ‘id‘: 101,    ‘str‘: ‘helloworld!‘}var errMsg = HelloWorld.verify(hw)console.log(errMsg)if (errMsg) {    throw errMsg} else {    var message = HelloWorld.create(hw)    var buffer = HelloWorld.encode(message).finish()    var message = HelloWorld.decode(buffer)    console.log(message)    fs.writeFile(‘./test.log‘, buffer, err => {        if (!err) {            console.log(‘Done!‘)        } else {            console.err(err)        }    })}

具体效果:

技术分享

protobuf相比传统的xml、json,数据传输更加紧凑,二进制协议也更加高效,非常适合于各种服务间的数据交换,目前各大主流语言基本都有具体实现。

protobuf简单测试应用