Nodejs 使用Protobuf

 

參考:node

Nodejs中使用Protobuf的.proto文件express

 

爲了在nodejs服務端使用protonpm

因此網上找了一些教程,這裏實現下。 app

 

一 安裝protobufjs

在服務端項目文件夾裏shift+右鍵,選擇在此處打開命令窗口,輸入socket

npm install protobufjs

 

二 .proto文件轉成.js

隨意寫一個測試的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);
    });
});

  

其它:

 一, 直接使用.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 
版權聲明:本文爲博主原創文章,轉載請附上博文連接!
相關文章
相關標籤/搜索