节点js返回收到的数据(静态api)响应

时间:2018-08-11 23:46:26

标签: node.js rest express

我创建了简单的rest api以返回媒体文件

"start":"node server.js"

如果我致电http://127.0.0.1:3002/file.ogg

服务器读取文件1.ogg并作为响应返回。

现在我使用websocket从外部设备获取文件数据

var fs = require('fs')
var express = require('express')
var app = express()
app.get('/file.ogg', function (req, res) {
    res.set({
      'Content-Type': 'audio/ogg',
      'Transfer-Encoding': 'chunked'
    });

    var inputStream = fs.createReadStream(__dirname + '/1.ogg');     
    inputStream.pipe(res);
});

var server = app.listen(3002);

我想像第一个例子一样返回数据(buf),但又不保存任何想法,我该怎么做。

1 个答案:

答案 0 :(得分:0)

如果文件很大,则可能需要引入一个额外的Websocket流媒体库,该库可让您将数据流回到客户端。 socket.io-stream是专门为此创建的。从他们的例子中:

// send data
ss(socket).on('file', function(stream) {
  fs.createReadStream('/path/to/file').pipe(stream);
});

// receive data
ss(socket).emit('file', stream);
stream.pipe(fs.createWriteStream('file.txt'));