2016-04-10 4 views
4

Expressを使ってnodeJSにビデオストリーミングサーバーを構築し、進行状況を取得するために「要求進行」モジュールを使用しています。 これはうまく動作しています(ビデオストリーミング)。
しかし、問題は、ブラウザを閉じたり、次のページに移動しても、サーバーはまだデータをストリーミングしていることです。私はコンソールでそれを見ることができます。
nodeJSビデオストリーミング、接続が切断されたり、別のページに移動したときに接続が閉じない

ここでは、そのためのコードです:

app.route('/media/*').get(function (req, res) { 

    var originalUrl = "http://myactualserver.com"; 
    var resourceUrl = originalUrl.split('media'); 
    var requestURL = BASE_URL + resourceUrl[1]; 

    req.on('close', function() { 
    console.log('Client closed the connection'); 
    }); 

    var options = {}; 
    progress(request(requestURL), { 
    throttle: 1000, 
    delay: 0, 
    lengthHeader: 'content-length', 
    }) 
    .on('progress', function (state) { 
     console.log('progress', state); 
    }) 
    .on('error', function (err) { 
     console.log('err'); 
    }) 
    .on('end', function() { 
     console.log('end'); 
    }) 
    .pipe(res); 
}); 

私は次のポストを試してみましたが、最終的には

req.on("close", function(){}); 


Video Streaming with nodejs and Express

node.js http server, detect when clients disconnect

を追加しました

Node.js server keeps streaming data even after client disconnected

私の質問は:「エラー」または「要求進行中」の「終わり」の機能のいずれかを呼び出しますどのように
1.?
2.ストリーミングをどのように閉じますか?
なぜconsole.log('Client closed the connection'); が2回呼び出されるのですか?ご質問

答えて

2

回答:

  1. おそらく

    https://github.com/IndigoUnited/node-request-progress/blob/master/test/test.js

    はまた、あなたが最後の進捗状況を使用することができます。この例を参照してください

events.EventEmitterから発する使用することができます閉鎖状態の状態。

  1. ここで何が問題なのかわからない場合は、ソケットが閉じられるまで進捗状況が続きます。

  2. ブラウザ(デフォルトのプレーヤー)からリクエストを行っている場合、2つのリクエストが行われます。

関連する問題