2011-11-24 50 views
1

我試圖使用Connect來提供靜態內容,但是對於大文件(> 40KB),發送了第一個40,960字節塊(有時是32,940字節),然後傳輸休眠2分鐘,然後傳輸完成。當我將流傳遞給響應時,我發現它會發生(這是Connect發送響應的方式)。Node.js:響應的管道流通過HTTPS凍結

這裏是一個代碼重新產生此,在節點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) { 
    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); 

隨着fs.readFile,我cannnot重現:

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

回答