【发布时间】:2017-04-19 01:06:48
【问题描述】:
我有一个使用 nodejs 设置的服务器和一个客户端。服务器正在使用 socket.io-stream 向客户端发送文件。传输文件后,我想开始在客户端使用它。为此,我正在听流的“结束”事件。 我的代码有效,但只有一次。在我发送的第一个文件上触发了事件,但在下一个文件上没有。在第一个文件之后,下一个文件已损坏并且为 0 字节。
server.js
socketObj.emit('order', orderData);
ss(socketObj).on('file', function(stream) {
fs.createReadStream('./uploads/'+ orderData.file.name +'').pipe(stream);
});
client.js
socket.on('order', function(data) {
var stream = ss.createStream();
ss(socket).emit('file', stream);
stream.pipe(fs.createWriteStream(data.file.name));
stream.on('end', function(){
doSomeStuff(data); //This function is called only once
});
});
我尝试使用'end' 和'finish' 事件,将autoClose 设置为true 和false,使用stream.close() 和stream.end(),但没有任何效果。对我来说,就像有些东西没有正确重置。
【问题讨论】:
标签: node.js sockets socket.io stream