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