Sorry für die Art der spezifischen Frage, aber ich habe ein sehr seltsames Problem und ich bin mir nicht sicher, warum es passiert.Node Request Handler Neustart mit Stream
Ich schreibe eine Node-Anwendung, die eine Youtube-Video-ID verwendet und dann das Audio an den Anforderer überträgt. Hier ist der Code.
router.get('/video/:videoId', function(req, res, next) {
console.log('requested ' + req.params.videoId);
var filename = req.params.videoId + ".mp3";
youtubeDL.exec(req.params.videoId, ['-x', '--audio-format', 'mp3', '-o', filename], {}, function(err, output) {
if (err){
res.send("bad request");
return;
}else{
console.log("exec begin")
res.setHeader("content-type", "audio/mp3");
fs.createReadStream(filename).pipe(res);
fs.unlink(filename);
console.log("exec end")
}
});
console.log("router end");
});
Das Problem ist, dass die Anforderung beginnt „Looping“ Ich denke, ist, wie ich es beschreiben würde, und die Anforderung wird 3-mal aufgerufen vor dem Anhalten.
Zum Beispiel ist hier der Ausgang für http://localhost:3000/resources/video/JCHTX_pgw6A
requested JCHTX_pgw6A
router end
[Long pause here]
exec begin
exec end
GET /resources/video/JCHTX_pgw6A 200 17396.280 ms - -
requested JCHTX_pgw6A
router end
[Long pause here]
exec begin
exec end
GET /resources/video/JCHTX_pgw6A 200 17550.309 ms - -
requested JCHTX_pgw6A
router end
[Long pause here]
exec begin
exec end
GET /resources/video/JCHTX_pgw6A 200 1645.932 ms - -
an welcher Stelle es aufhört. Hat jemand irgendwelche Ideen, warum dies geschieht oder wie man zusätzliche Informationen bekommt? Ich bin total ratlos.
Wie wird die Anfrage vom Kunden gestellt? – mscdex
Ich besuche http: // localhost: 3000/resources/video/JCHTX_pgw6A mit meinem Browser (Chrome) und das Ergebnis ist der Browser Media Player, aber der Pfeil ist ausgegraut, weil er nicht geladen wird. –
Gibt es Meldungen in der Chrome-Entwicklerkonsole und/oder nützliche Hinweise auf dem Netzwerk-Tab für die Videoanfragen? – mscdex