參考:node
Nodejs中使用Protobuf的.proto文件express
爲了在nodejs服務端使用protonpm
因此網上找了一些教程,這裏實現下。 app
在服務端項目文件夾裏shift+右鍵,選擇在此處打開命令窗口,輸入socket
npm install protobufjs
隨意寫一個測試的login.proto測試
將login.proto放在服務端項目文件夾下ui
shift+右鍵,打開命令窗口,生成jssocket.io
pbjs -t static-module -w commonjs -o login.js login.proto
生成d.ts (服務端不須要,客戶端須要).net
pbts -o login.d.ts login.js
項目文件夾內生成了login.js文件3d
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); }); });
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 版權聲明:本文爲博主原創文章,轉載請附上博文連接!