Nodejs 使用Protobuf
参考:
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相关推荐
- (十五)nodejs循序渐进-高性能游戏服务器框架pomelo之Protobuf模块
消息压缩 在实际编程中,为了减少数据传输带宽的消耗,提高传输效率,pomelo提供了对消息的压缩,包括基于字典的对route的压缩和基于protobuf的对具体传输数据的压缩. route压缩 在实际 ...
- python中使用 protocol buffer(Protobuf)
项目中引入proto的依赖 [两种方法]: 方法1. 官网下载对应的语言包,https://github.com/protocolbuffers/protobuf/releases 这里选择pytho ...
- grpc java 泛型_gRPC中Any类型的使用(Java和NodeJs端)
工作中要把原来Java服务端基于SpringMVC的服务改为使用gRPC直接调用.由于原Service的返回值为动态的Map类型,key值不确定,且value的类型不唯一,因此使用了protobuf ...
- Dubbo学习总结(10)——里程碑式 Dubbo 2.7.5 版本发布,性能提升30%,支持 HTTP/2、TLS、Protobuf等特性。
作者简介:刘军,GitHub账号Chickenlj,Apache Dubbo PMC,项目核心维护者,见证了Dubbo从重启开源到Apache毕业的整个流程.现任职阿里云云原生应用平台团队,参与服务框 ...
- CocosCreator中Protobuf的简单使用
cocosCreator中Protobuf的简单使用 proto文件格式: pro1.jpeg 准备工具: cocosCreator webStorm或者VSCode 安装node.js 下载prot ...
- TarsGo新版本发布,支持protobuf,zipkin和自定义插件
本文作者:陈明杰(sandyskies) Tars是腾讯从2008年到今天一直在使用的后台逻辑层的统一应用框架,目前支持C++,Java,PHP,Nodejs,Golang语言.该框架为用户提供了涉及 ...
- protobuf 微信小程序_Protobuf在微信小游戏开发中的使用技巧
微信小游戏发布后,许多 HTML5 游戏开发者希望把现有的 HTML5 游戏迁移到微信小游戏中,但由于一些技术上的问题导致进程卡壳.通过梳理Egret社区.白鹭小游戏开发技术讨论群等途径的反馈后发现, ...
- nodejs的部署的问题
因为我们要管理很多依赖, 最后我们选择使用autod来管理, autod:一个自动分析项目所有的文件,获取所有的项目依赖和它们的版本的工具. autod 同时可以根据我们传递的一些选项和参数,来直接更 ...
- 金蝶随手记团队分享:还在用JSON? Protobuf让数据传输更省更快(原理篇)
为什么80%的码农都做不了架构师?>>> 本文作者:丁同舟,转载自"随手记技术团队"微信公众号. 1.前言 跟移动端IM中追求数据传输效率.网络流量消耗等需 ...
- 金蝶随手记团队分享:还在用JSON? Protobuf让数据传输更省更快(实战篇)
本文作者:丁同舟,来自金蝶随手记技术团队. 1.前言 本文接上篇<金蝶随手记团队分享:还在用JSON? Protobuf让数据传输更省更快(原理篇)>,以iOS端的Objective-C代 ...
最新文章
- PHP CI框架目录结构及运行机制
- 如何搭建一个视频直播系统
- error RC2108: expected numerical dialog constant
- 鹅厂分享:AB实验只是开始?如何归因和解读才是王道!
- 安装仅限于用于sharepoint_酒泉汗蒸房设计施工厂家,家庭汗蒸房安装厂家
- android中调用fft函数,J使用PCM数据在Android中转换FFT(JTransforms FFT in Android from PCM data)...
- when is SAP UI5 url hash changed in browser
- [leetcode]Pascal#39;s Triangle II
- 5月TIOBE编程榜,Java、PHP降级,C#再度上升!
- linux gtest安装
- Flutter WillPopScope 双击返回与界面退出提示
- python自动化办公选择题_Python +Selenium 自动化 css练习题
- linux怎么返回上级目录啊,用cd/命令却这样:bash:cd/:没有那个文件或目录
- 手机怎样才能接收到五公里外的WiFi信号?
- DTP模型之一:(XA协议之一)XA协议、二阶段2PC、三阶段3PC提交
- 样本大小的确定_显着功效样本大小效应大小之间的关系
- 发送邮件 显示对方服务器未响应,邮件对方服务器未响应
- python爬虫:英为财情爬取美国十年期国债收益率
- asp.net914-自驾游网站的设计与实现
- CrystalDiskInfo 各项参数说明