1. 程式人生 > >protobuf簡單測試應用

protobuf簡單測試應用

127.0.0.1 sha 二進制協議 sync 簡單測試 比較 eat int pre

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簡單測試應用