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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏BaronTalk

在Android项目中使用Java8

前言 在过去的文章中我介绍过Java8的一些新特性,包括: Java8新特性第1章(Lambda表达式) Java8新特性第2章(接口默认方法) Java8新特...

32660
来自专栏ShaoYL

XCode调试器LLDB

17360
来自专栏JackieZheng

Java豆瓣电影爬虫——小爬虫成长记(附源码)

  以前也用过爬虫,比如使用nutch爬取指定种子,基于爬到的数据做搜索,还大致看过一些源码。当然,nutch对于爬虫考虑的是十分全面和细致的。每当看到屏幕上唰...

442110

当Vert.x符合Reactive eXtensions(Vert.x简介的第5部分)

这篇文章是我介绍Eclipse Vert.x系列的第五篇文章。在上一篇文章中,我们看到了Vert.x如何与数据库交互。我们使用Future对象来驯服Vert.x...

22420
来自专栏西安-晁州

protobuf简单测试应用

protobuf是google推出的一种数据交换协议,比较适合应用于底层服务交互,nodejs提供protobufjs包的实现,下面是一个简单的测试demo: ...

40400
来自专栏java一日一条

优秀的Java程序测试是什么样的?

测试的名字至关重要,特别是从文档角度来看的话。我们应该能够大声读出测试的名字就像一组需求一样。事实上,有一个伟大的IntelliJ插件,叫Enso,它会将你的测...

7420
来自专栏程序员阿凯

从 Spring 开始,谈谈如何自学 Java 常用框架

21220
来自专栏华章科技

Ruby 和 Python 分析器是如何工作的?

你好! 我作为一名编写Ruby profiler的先驱,我想对现有的Ruby和Python profiler如何工作进行一次调查。 这也有助于回答很多人的问题:...

12520
来自专栏Java开发者杂谈

分布式改造剧集之Redis缓存踩坑记

29840
来自专栏企鹅FM

形形色色的锁

java中有各种同步机制,尤其是JDK1.5以后引入Lock后,衍生出各种功能不一的锁,比如ReentrantLock、Semaphore、CountDownL...

25940

扫码关注云+社区

领取腾讯云代金券