使用带有node.js的协议缓冲区时出现问题

时间:2017-01-03 09:00:05

标签: node.js protocol-buffers axios

我有一个小型练习应用程序,它在服务器端和浏览器中使用节点,表达和协议缓冲区,我使用axios,longJS,协议缓冲区和bytebuffer。我的问题是没有建立连接,但数据在此过程中的某处丢失了。正在从服务器发送一些内容,并且正在接收来自该客户端的内容,但数据尚未到达。

服务器端代码:

<h2 class="headertekst">Test 1</h2>

客户端代码:

    let messageFile = ProtoBuf.load(path.join(__dirname, publicFolderName, 'message.proto'))
    .then((root) => {
        Message = root.lookup('message.Message');
    })
    .catch((error) => {
        console.log(error);
    });

let messagesStore = [
    {text: 'hey', lang: 'english'},
    {text: 'ho', lang: 'french'},
    {text: "Let's go", lang: 'spanish'}
];

let app = express();

app.use(express.static(publicFolderName));

app.use((rq, rs, nx) => {
    if(!rq.is('application/octet-stream')) return nx();
    var data = [];
    rq.on('data', (chunk) => {
        data.push(chunk);
    });
    rq.on('end', () => {
        if(data.length <= 0) return nx();
        data = Buffer.concat(data);
        console.log('Received data', data);
        rq.raw = data;
        nx();
    })
});

app.get('/api/messages', (rq, rs, nx) => {
    var randNum = Math.round(Math.random()*2);
    console.log(randNum);
    var message = Message.create(messagesStore[randNum]);
    console.log("Encode and decode: ", Message.decode(Message.encode(message).finish()));
    console.log("Buffer being sent, ", Message.encode(message).finish());
    var buffer = Message.encode(message).finish();
    rs.send(buffer);
})

来自服务器的响应是一个空对象,没有错误。

任何建议为什么会非常感激。

0 个答案:

没有答案