zoukankan      html  css  js  c++  java
  • 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,数据传输更加紧凑,二进制协议也更加高效,非常适合于各种服务间的数据交换,目前各大主流语言基本都有具体实现。

  • 相关阅读:
    140704
    140703
    140702
    堆排序
    并查集
    140701
    这年暑假集训-140630
    vim for python
    hihocode 第九十二周 数论一·Miller-Rabin质数测试
    hdu 3157 Crazy Circuits 有源汇和下界的最小费用流
  • 原文地址:https://www.cnblogs.com/vipzhou/p/7137518.html
Copyright © 2011-2022 走看看