在node.js服务器中使用https读取同步文件

时间:2013-11-12 03:53:17

标签: javascript node.js asynchronous

我已经看到一些示例,我们可以使用以下代码创建Node.js HTTPS服务器:

var https = require('https');

https.createServer({
  key: fs.readFileSync('/path/to/something.key'),
  cert: fs.readFileSync('/path/to/something.crt'),
}, app).listen(443);

此处是否需要使用readFileSync?在读取密钥和证书之前,它会延迟每个用户的请求吗?对此上下文的同步和异步有点困惑。

1 个答案:

答案 0 :(得分:2)

创建HTTP服务器实例时不需要使用同步读取,只是它更方便,文件只需要读取一次,即创建服务器实例时。

例如,您也可以执行以下操作,但这样做毫无意义,并且会降低您的代码的可读性:

var fs = require('fs');
var https = require('https');

fs.readFile('/path/to/something.key', function(err, key) {
  fs.readFile('/path/to/something.cert', function(err, cert) {
    https.createServer({
      key: key,
      cert: cert
    }, app).listen(443);
  });
});

您需要观察事物的处理方式在HTTP请求处理程序中,该处理程序是每次服务器收到请求时运行的函数。如果你这样阻止服务器:

https.createServer(function(req, res) {
  // block the thread with something synchronous
  res.end();
}).listen(443);

将收到一个请求,并且在阻止操作完成之前服务器不会接受任何请求。