2016-08-01 3 views
0

マイアプリのコードは次のようになります。私はそれらのページにアクセスするとプロトコルバッファのデータのエンコード

main.js

const express = require('express'); 
const app = express(); 
const ProtoBuf = require("protobufjs"); 
let builder = ProtoBuf.loadProtoFile("protos/player.proto") 
let Main = builder.build("Main") 
let Player = Main.PlayerInfo 

app.get('/test1', function (req, res) { 
    let plr = new Player("name", "123") 
    let enc = plr.encode() 
    res.send(`Message is: ${enc}`); // Response 'Message is: ByteBufferNB(offset=0,markedOffset=-1,limit=11,capacity=16)' 

}); 
app.get('/test2', function (req, res) { 
    let plr = new Player("name", "123") 
    let enc = plr.encode() 
    res.send(`Message is: ${enc.toBuffer()}`); // Response 'Message is: name123' 

}); 
app.get('/test3', function (req, res) { 
    let plr = new Player("name", "123") 
    let enc = plr.encode() 
    res.send(`Message is: ${plr.toBuffer()}`); // Response 'Message is: name123' 

}); 

app.listen(3000, function() { 
    console.log('Example app listening on port 3000!'); 
}); 

player.proto

syntax = "proto3"; 

package Main; 

message PlayerInfo { 
    required string username = 1; 
    required string password = 2; 
} 

、私は回答を得ますlike:

/test1 - Message is: ByteBufferNB(offset=0,markedOffset=-1,limit=11,capacity=16) 
/test2 - Message is: name123 
/test3 - Message is: name123 

質問:そのままiはデータを参照

なぜ実施例2及び3、(Iエンコード()とtoBuffer()関数を使用しているという事実にもかかわらず)ecodedありませんか?

+0

をあなたのメッセージのエンコード形式は、(私が思う)する必要があります:022 \ 003123' \ '\ 012 \ 004nameはBuffer.toString(つまり、それは可能です)表示のために '\ 012'、' \ 004'、 '\ 022'、' \ 003'を削除しますか? '\ 012'は' \ n'ですが、他は印刷可能な形式ではありません。 –

答えて

0

オンでtoBufferplrに送信しています。あなたはencでそれを行うと思います。

これはあなたに符号化されたデータを与える必要があります。

res.send(plr.encode().toBuffer(), (err, data) => { 
    console.log(data); 
}); 
関連する問題