【问题标题】:How does the basic nodejs server setup code works?基本的 nodejs 服务器设置代码是如何工作的?
【发布时间】:2021-07-09 03:22:07
【问题描述】:

我目前正在研究 node.js,并想确保我对下面的代码的理解。该代码是关于仅使用 node.js 设置服务器的。

const http = require('http');

// create the server
const server = http.createServer((req, res) => {
  // check request from a client
  if (req.url === '/') {
    // response to the client
    res.end('welcome to my home page');
  } else {
    res.end(`<h1>Page Not Found</h1>`);
  }
});

// start the server
server.listen(5000, () => console.log('server listening on port 5000'));
  1. “createServer()”回调已注册
  2. “listen()”回调已注册
  3. “createServer()”运行 - 服务器已创建
  4. “listen()”运行 - 服务器已启动
  • 服务器在事件循环中运行,直到 I/用户退出。
  1. 当有请求(例如)页面重新加载时,“createServer()”运行。

【问题讨论】:

  • 哦,谢谢!我修好了。顺便说一句,为什么我会投反对票?你有机会知道吗?
  • 我不知道你为什么要投反对票。也许是因为这不是一个我们可以轻松写出有意义答案的经典问题。相反,您问的是“这是正确的”,这通常不是问题在这里的工作方式。我自己没有任何问题。

标签: javascript node.js server


【解决方案1】:

您的某些解释并不完全是它的工作原理。以下是代码工作原理的更详细摘要。

  1. http.createServer(callback) 被调用。
  2. 这将创建一个 http 服务器对象并使用该服务器对象配置一个回调,以便在每个新传入请求时调用。该函数调用的结果是它返回一个server 对象。服务器尚未运行。
  3. server.listen(port, callback) 被调用。
  4. 这会启动您的服务器,以便它现在接受特定端口上的传入 TCP 连接。当启动服务器的过程完成并且服务器处于活动状态(这是一个异步过程)时,将调用此回调以通知您服务器现在已启动并运行。
  5. 稍后,当对服务器的传入请求到达时,服务器后面的本机代码将创建一个事件供 nodejs 事件循环进行调度。当事件循环到达该事件时,它将调用您传递给 http.createServer(callback) 的回调,并将您的回调可用于响应传入 http 请求的请求和响应对象传递给它。
  6. 当您从该回调返回时,事件循环将能够调度下一个等待运行的事件(可以是 nodejs 中的任何类型的事件、另一个 http 请求、计时器、其他网络、磁盘 I/O、等等...)。

【讨论】:

    猜你喜欢
    • 2019-02-22
    • 2019-07-05
    • 2022-10-07
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多