如何将搜索与节点表达音频流合并

时间:2014-03-09 16:27:19

标签: node.js express streaming audio-streaming seek

我有一个我正在托管的小型播客源,在我最终将它连接到Downcast后,一切正常,直到我尝试跳过前进/后退。我终于意识到,搜索本身并不是管道流的一部分。我四处寻找,似乎无法找到任何有用的东西。

使用以下代码,我将如何实现搜索?

app.get('/stream/:id', function(req, res) {
    if (!req.params.id) {
        res.status(404);
        res.send("Not found");
    }

    var filePath = path.join(Config.media, '**' , req.params.id);

    filePath = glob.sync(filePath)[0];

    var stat = fs.statSync(filePath);

    res.writeHead(200, {
        'Content-Type': 'audio/mpeg',
        'Content-Length': stat.size,
        'Accept-Ranges': 'bytes'
    });

    var readStream = fs.createReadStream(filePath);
    readStream.pipe(res);
});

1 个答案:

答案 0 :(得分:3)

我实际上可以使用visionmedia/send执行此操作(它也处理了很多关于路径的工作)。

以下是与搜索有关的新代码:

var send = require('send');

...

app.get('/stream/*', function(req, res) {
    var path = Url.parse(req.url).pathname.replace('/stream','');

    send(req, path)
        .root(Config.media)
        .on('error', function(err) {
            res.statusCode = err.status || 500;
            res.end(err.message);
        })
        .on('directory', function() {
            res.statusCode = 403;
            res.end("Forbidden");
        })
        .pipe(res);

});