我已经看到一些示例,我们可以使用以下代码创建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
?在读取密钥和证书之前,它会延迟每个用户的请求吗?对此上下文的同步和异步有点困惑。
答案 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);
将收到一个请求,并且在阻止操作完成之前服务器不会接受任何请求。