Node.js创建服务器时http.createServer与server.listen的执行顺序是怎样的?
Node.js HTTP 服务器相关问题解答
执行顺序说明
http.createServer() 会优先于 server.listen() 执行。
Node.js 主线程的普通代码是同步逐行执行的,你必须先调用 http.createServer() 创建拿到HTTP服务器实例,才能调用这个实例上的 listen 方法启动监听,执行顺序和代码的书写顺序完全一致。
createServer 回调触发时机
http.createServer 中传入的回调是请求处理函数,不会在创建服务的时候立刻执行,而是会在服务器成功启动监听后,每收到一个新的HTTP请求时触发一次。
这个回调默认会被注入两个参数:
req:存储了当前HTTP请求的所有相关信息,比如请求方法、请求路径、请求头、请求体等res:用来构造和返回当前请求对应的响应,比如设置状态码、响应头、返回响应内容等
示例代码参考
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; // 创建服务实例,此时传入的回调不会立刻执行 const server = http.createServer((req, res) => { // 每次收到请求才会执行这里的逻辑 res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World'); }); // 启动服务监听,监听成功后会执行传入的回调打印启动日志 server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
内容的提问来源于stack exchange,提问作者avishek kumar
相关产品推荐
相关产品推荐

