2011-11-24 4 views
1

Connectを使用して静的コンテンツを配信しようとしていますが、大きなファイル(> 40KB)で40,960バイトの最初のチャンク(32,940バイト)転送は2分間スリープ状態になり、転送が終了します。私は、ストリームをパイプに接続すると、これが起こることがわかりました(これがConnectが応答を送信する方法です)。 fs.readFileNode.js:HTTPSで応答するパイプストリーム

var fs = require("fs"), https = require("https"); 

var privateKey = fs.readFileSync('privatekey.pem').toString(); 
var certificate = fs.readFileSync('certificate.pem').toString(); 
var options = {key: privateKey, cert: certificate}; 
var server = https.createServer(options, 
function(req, res) { 
    var path = __dirname + "/public" + req.url; 
    fs.stat(path, function(err, stat){ 
     if(err) { 
      res.writeHead(404, {'Content-Type': 'text/html'}); 
      res.end(""+err); 
     } else { 
      res.writeHead(200, { 
       'Content-Type': 'text/html', 
       'Content-Length': stat.size}); 
      var stream = fs.createReadStream(path); 
      stream.pipe(res); 
     } 
    }); 
}).listen(8364); 

、私が再現cannnot:ここ

はを再生これは、ノード0.6.2で、WindowsおよびLinux上で、48980バイトのファイルにコードです

var fs = require("fs"), https = require("https"); 

var privateKey = fs.readFileSync('privatekey.pem').toString(); 
var certificate = fs.readFileSync('certificate.pem').toString(); 
var options = {key: privateKey, cert: certificate}; 
var server = https.createServer(options, 
function(req, res) { 
    fs.readFile(__dirname + "/public" + req.url, function(err, data){ 
     if(err) { 
      res.writeHead(404, {'Content-Type': 'text/html'}); 
      res.end(""+err); 
     } else { 
      res.writeHead(200, { 
       'Content-Type': 'text/html', 
       'Content-Length': data.length}); 
      res.end(data); 
     } }); 
}).listen(8364); 

私は間違ったことをしましたか?

+0

これは証明書なしでは機能しますか? –

+0

HTTPで動作します。それはあなたが "証明書なし"で意味したものですか? – Jazz

答えて

0

私は配管と非常によく似た問題を抱えていた(関連するかもしれない) Valums file-uploader on nodejs - multiple file upload

はまた2分スリープしていました。パイプで解決策が見つかりませんでしたいくつかの回避策でした。

+0

HTTPSを使用していますか? – Jazz

関連する問題