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

  • 相关阅读:
    uniapp跨域
    uniapp图片文件转base64
    懒加载
    修改富文本样式
    搜集到的常用Scheme
    JS浏览器复制
    程序员必须知道的六大ES6新特性
    详解ES6中的 let 和const
    数据库基础
    配置环境变量
  • 原文地址:https://www.cnblogs.com/vipzhou/p/7137518.html
Copyright © 2020-2023  润新知