参考:

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
版权声明:本文为博主原创文章,转载请附上博文链接!

  

Nodejs 使用Protobuf的更多相关文章

  1. Cocos2d-JS/Ajax用Protobuf与NodeJS/Java通信

    原文地址:http://www.iclojure.com/blog/articles/2016/04/29/cocos2d-js-ajax-protobuf-nodejs-java Google的Pr ...

  2. NodeJs使用nodejs-websocket + protobuf

    参考: HTML5+NodeJs实现WebSocket即时通讯 (某人的blog) nodejs-websocket使用示例 (www.npmjs.com网站,有示例) Buffer API (nod ...

  3. 在安卓下打包cocos2d-js 3.6项目with ProtoBuf.js

    项目用到了cocos2d-js 3.6和ProtoBuf.js,但是打包成apk时运行时总是报错(evaluatedOK == JS_FALSE),没有具体的文件和行号报错信息. 只能一个一个文件排查 ...

  4. Node.js(2)-protobuf zeromq gzip

    1.Node.Js环境准备 在win8 + vs.net 2012 环境下调试了很长时间没搞定安装编译问题,重装系统测试了2套环境,解决了编译问题: 1)Win8.1 + vs.net 2013 2) ...

  5. gRPC中Any类型的使用(Java和NodeJs端)

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

  6. Deno下一代Nodejs?Deno初体验

    前言 Ryan Dahl之父发布了新的项目Deno,很多IT媒体都使用了标题“下一代Nodejs”,首先我们看一下Deno的特性: 1.支持typescript (nodejs目前也支持). 2.无p ...

  7. 【咸鱼教程】protobuf在websocket通讯中的使用

    教程目录一 protobuf简介二 使用protobuf三 Demo下载 参考: CSDN:Egret项目中使用protobuf(protobufjs) TS项目中使用Protobuf的解决方案(ba ...

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

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

  9. protobuf简单测试应用

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

随机推荐

  1. Vmware下mint os的安装

    在vmware 11中,mint倒是很好安装.直接读取iso文件,会自动进入一个类似WindowsPE的安装系统,直接双击开始安装就好,比较傻瓜化. 但是安装好了,字体太小,看着很不舒服,于是就倒腾V ...

  2. mysql [索引优化] -- in or替换为union all

    一个文章库,里面有两个表:category和article.category里面有10条分类数据.article里面有 20万条.article里面有一个"article_category& ...

  3. Mysql取随机数据效率测试(200W条中读取100条)

    第一种方案: SELECT * FROM `follow_record` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(record_id) FROM ...

  4. shell编程学习笔记(八):Shell中if判断的使用

    一.if的语法: 1.单分支语句结构 if [ 条件表达式 ]; then 指令 fi 2.双分支语句结构 if [ 条件表达式 ]; then 指令一 else 指令二 fi 3.多分支语句结构 i ...

  5. Java 基础【19】代理

    Java 代理(Proxy)模式与现实中的代理含义一致,如旅游代理.明星的经纪人. 在目标对象实现基础上,增加额外的功能操作,由此来扩展目标对象的功能. JavaWeb 中最常见的过滤器.Struts ...

  6. 海康威视(iOS集成)

    一.注意事项 1.在开发海康威视的SimpleDemo时,最好使用真机,因为海康提供的5个库不支持模拟的i386架构. 2.在XCode9.3版本上运行SimpleDemo时,对.mm文件进行编辑时, ...

  7. git图解

  8. RobotFrameWork编写接口测试及如何断言

    1. 前言 本篇是第一系列(Http接口自动化)的第五课程,如果对系列课程大纲不清楚的,可以查看<RobotFramework系列免费课程-开课了~>. 前面我们介绍了,在真正实施前,需先 ...

  9. mac下安装xampp、及其之上的组件安装

    由于mac下开发需要用到php7,这里是用的xampp集成开发版本.但是mac下安装xampp失败,失败信息如下: Error starting "XAMPP" stack: fa ...

  10. CentOS 7.4安装nodejs & nginx & pm2

    一.安装nodejs1.查看操作系统信息 uname -a cat /etc/centos-release 2.安装wget yum install wget -y3.安装nodejs 1.下载 wg ...