我有一个小型练习应用程序,它在服务器端和浏览器中使用节点,表达和协议缓冲区,我使用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);
})
来自服务器的响应是一个空对象,没有错误。
任何建议为什么会非常感激。