protobuf簡單測試應用
阿新 • • 發佈:2017-07-08
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簡單測試應用