1

我已经看到了一些示例,我们可以使用以下代码创建 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吗?是否会延迟每个用户的请求,直到读取密钥和证书?在这种情况下,对同步和异步有点困惑。

4

1 回答 1

3

创建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);

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

于 2013-11-12T04:00:20.687 回答