参考:

Nodejs中使用Protobuf的.proto文件

为了在nodejs服务端使用proto

所以网上找了一些教程,这里实现下。

一 安装protobufjs

在服务端项目文件夹里shift+右键,选择在此处打开命令窗口,输入

npm install protobufjs

二 .proto文件转成.js

随意写一个测试的login.proto

将login.proto放在服务端项目文件夹下

shift+右键,打开命令窗口,生成js

pbjs -t static-module -w commonjs -o login.js login.proto

生成d.ts (服务端不需要,客户端需要)

pbts -o login.d.ts login.js

  

项目文件夹内生成了login.js文件

三 代码内使用

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);var loginProto = require("./login");app.get('/', function(req, res){res.send('<h1>Welcome Realtime Server</h1>');
});http.listen(3004, function(){console.log('listening on *:3004');
});//连接成功
io.on('connection', function(socket){console.log('a user connected');//监听登录请求socket.on('login', function(data,callback){         //解析登录数据var loginReqObj = loginProto.login.LoginReq.decode(data);console.log("请求登录的用户:",loginReqObj.uid);//返回登录响应let loginResObj = loginProto.login.LoginRes.create();loginResObj.code = 200;var buffer = loginProto.login.LoginReq.encode(loginResObj).finish();socket.emit('login', buffer);});
});

  

其它:

 一, 直接使用.proto文件

var ProtoBufJs = require("protobufjs");
var root = ProtoBufJs.loadSync("./zzz.proto");
var AccountList = root.lookupType("zzz.AccountList");
var Account = root.lookupType("zzz.Account");
var accountListObj = AccountList.create();
for(var i = 0; i < 10; i++){var accountObj = Account.create();accountObj.accountName = "断天涯"+i;accountObj.pwd = "密码"+i;accountListObj.list.push(accountObj);
}
var buffer = AccountList.encode(accountListObj).finish();
---------------------
作者:断天涯zzz
来源:CSDN
原文:https://blog.csdn.net/u013052238/article/details/81010794
版权声明:本文为博主原创文章,转载请附上博文链接!

  

转载于:https://www.cnblogs.com/gamedaybyday/p/10537318.html

Nodejs 使用Protobuf相关推荐

  1. (十五)nodejs循序渐进-高性能游戏服务器框架pomelo之Protobuf模块

    消息压缩 在实际编程中,为了减少数据传输带宽的消耗,提高传输效率,pomelo提供了对消息的压缩,包括基于字典的对route的压缩和基于protobuf的对具体传输数据的压缩. route压缩 在实际 ...

  2. python中使用 protocol buffer(Protobuf)

    项目中引入proto的依赖 [两种方法]: 方法1. 官网下载对应的语言包,https://github.com/protocolbuffers/protobuf/releases 这里选择pytho ...

  3. grpc java 泛型_gRPC中Any类型的使用(Java和NodeJs端)

    工作中要把原来Java服务端基于SpringMVC的服务改为使用gRPC直接调用.由于原Service的返回值为动态的Map类型,key值不确定,且value的类型不唯一,因此使用了protobuf ...

  4. Dubbo学习总结(10)——里程碑式 Dubbo 2.7.5 版本发布,性能提升30%,支持 HTTP/2、TLS、Protobuf等特性。

    作者简介:刘军,GitHub账号Chickenlj,Apache Dubbo PMC,项目核心维护者,见证了Dubbo从重启开源到Apache毕业的整个流程.现任职阿里云云原生应用平台团队,参与服务框 ...

  5. CocosCreator中Protobuf的简单使用

    cocosCreator中Protobuf的简单使用 proto文件格式: pro1.jpeg 准备工具: cocosCreator webStorm或者VSCode 安装node.js 下载prot ...

  6. TarsGo新版本发布,支持protobuf,zipkin和自定义插件

    本文作者:陈明杰(sandyskies) Tars是腾讯从2008年到今天一直在使用的后台逻辑层的统一应用框架,目前支持C++,Java,PHP,Nodejs,Golang语言.该框架为用户提供了涉及 ...

  7. protobuf 微信小程序_Protobuf在微信小游戏开发中的使用技巧

    微信小游戏发布后,许多 HTML5 游戏开发者希望把现有的 HTML5 游戏迁移到微信小游戏中,但由于一些技术上的问题导致进程卡壳.通过梳理Egret社区.白鹭小游戏开发技术讨论群等途径的反馈后发现, ...

  8. nodejs的部署的问题

    因为我们要管理很多依赖, 最后我们选择使用autod来管理, autod:一个自动分析项目所有的文件,获取所有的项目依赖和它们的版本的工具. autod 同时可以根据我们传递的一些选项和参数,来直接更 ...

  9. 金蝶随手记团队分享:还在用JSON? Protobuf让数据传输更省更快(原理篇)

    为什么80%的码农都做不了架构师?>>>    本文作者:丁同舟,转载自"随手记技术团队"微信公众号. 1.前言 跟移动端IM中追求数据传输效率.网络流量消耗等需 ...

  10. 金蝶随手记团队分享:还在用JSON? Protobuf让数据传输更省更快(实战篇)

    本文作者:丁同舟,来自金蝶随手记技术团队. 1.前言 本文接上篇<金蝶随手记团队分享:还在用JSON? Protobuf让数据传输更省更快(原理篇)>,以iOS端的Objective-C代 ...

最新文章

  1. PHP CI框架目录结构及运行机制
  2. 如何搭建一个视频直播系统
  3. error RC2108: expected numerical dialog constant
  4. 鹅厂分享:AB实验只是开始?如何归因和解读才是王道!
  5. 安装仅限于用于sharepoint_酒泉汗蒸房设计施工厂家,家庭汗蒸房安装厂家
  6. android中调用fft函数,J使用PCM数据在Android中转换FFT(JTransforms FFT in Android from PCM data)...
  7. when is SAP UI5 url hash changed in browser
  8. [leetcode]Pascal#39;s Triangle II
  9. 5月TIOBE编程榜,Java、PHP降级,C#再度上升!
  10. linux gtest安装
  11. Flutter WillPopScope 双击返回与界面退出提示
  12. python自动化办公选择题_Python +Selenium 自动化 css练习题
  13. linux怎么返回上级目录啊,用cd/命令却这样:bash:cd/:没有那个文件或目录
  14. 手机怎样才能接收到五公里外的WiFi信号?
  15. DTP模型之一:(XA协议之一)XA协议、二阶段2PC、三阶段3PC提交
  16. 样本大小的确定_显着功效样本大小效应大小之间的关系
  17. 发送邮件 显示对方服务器未响应,邮件对方服务器未响应
  18. python爬虫:英为财情爬取美国十年期国债收益率
  19. asp.net914-自驾游网站的设计与实现
  20. CrystalDiskInfo 各项参数说明

热门文章

  1. DevOps及DevOps常用的工具介绍
  2. Linux常用到的命令
  3. js获得浏览器高度和宽度 参数
  4. 【电力电子】功率因素\无功功率
  5. Activiti(Flowable)流程克隆(运行时实例克隆)解决方案 一种订单制造中分裂与合并的核心技术实践...
  6. redis 任务队列
  7. 关于数据库死锁的检查方法
  8. 使用Axure创建iPhone应用程序原型(二)
  9. 我中的第一标:4000人中脱颖而出的威客
  10. [2018.10.18 T1] 艾奇摘苹果