protobuf简单测试应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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简单测试应用的主要内容,如果未能解决你的问题,请参考以下文章

发布构建导致简单的 protobuf 代码失败

基于Go语言的protobuf 安装 以及简单测试用例

PBTK:一款针对Protobuf App的逆向工程与模糊测试套件

在 Java 和 C++ 应用程序中使用 protobuf 解析时出错

Protobuf 简介及简单应用

Jmeter protobuf 测试。无法读取 Protobuf 消息