我想了解从有请求到http.createServer这个实例执行的过程node.js内部怎么做了?

来源:5-2 处理get请求

秋得法

2024-04-17

我想了解从有请求到http.createServer这个实例执行的过程node.js内部怎么做了?

写回答

4回答

秋得法

提问者

2024-04-18

理解请求到达 `http.createServer` 的过程需要对 Node.js 的事件循环和网络模型有一定的了解。


1. **事件循环**:Node.js 使用事件驱动的非阻塞 I/O 模型。事件循环是 Node.js 的核心,它持续监听事件并处理它们。当事件发生时,事件循环会调用相应的回调函数。


2. **网络模型**:Node.js 基于事件驱动,采用单线程模型处理网络请求。当你调用 `http.createServer` 时,Node.js 开始监听指定的端口。当有请求到达时,Node.js 将触发 `request` 事件,并将请求对象和响应对象传递给你提供的回调函数。


具体的流程如下:


- 当你的 Node.js 服务器开始运行时,事件循环开始。

- `http.createServer` 被调用,开始监听指定的端口。

- 当有请求到达时,操作系统内核将请求放入 Node.js 的事件队列中。

- 事件循环检查事件队列,发现有请求事件时,将触发 `request` 事件。

- `http.createServer` 中传入的回调函数被调用,并传入请求对象 `req` 和响应对象 `res`。

- 你在回调函数中编写的逻辑处理请求,并生成响应。

- 当你调用 `res.end()` 完成响应时,响应会被发送给客户端。

- 回调函数执行完成,事件循环继续监听事件。


总的来说,Node.js 的事件循环负责监听事件,而 `http.createServer` 创建了一个事件监听器,用于监听 HTTP 请求事件,当有请求到达时,Node.js 就会触发相应的回调函数来处理这个请求。


0
0

双越

2024-04-18

那得去看 nodejs 的源码了,C++ 写的

0
1
秋得法
本来想自问自答的,不知为什么自答的显示不出来 理解请求到达 `http.createServer` 的过程需要对 Node.js 的事件循环和网络模型有一定的了解。 1. **事件循环**:Node.js 使用事件驱动的非阻塞 I/O 模型。事件循环是 Node.js 的核心,它持续监听事件并处理它们。当事件发生时,事件循环会调用相应的回调函数。 2. **网络模型**:Node.js 基于事件驱动,采用单线程模型处理网络请求。当你调用 `http.createServer` 时,Node.js 开始监听指定的端口。当有请求到达时,Node.js 将触发 `request` 事件,并将请求对象和响应对象传递给你提供的回调函数。 具体的流程如下: - 当你的 Node.js 服务器开始运行时,事件循环开始。 - `http.createServer` 被调用,开始监听指定的端口。 - 当有请求到达时,操作系统内核将请求放入 Node.js 的事件队列中。 - 事件循环检查事件队列,发现有请求事件时,将触发 `request` 事件。 - `http.createServer` 中传入的回调函数被调用,并传入请求对象 `req` 和响应对象 `res`。 - 你在回调函数中编写的逻辑处理请求,并生成响应。 - 当你调用 `res.end()` 完成响应时,响应会被发送给客户端。 - 回调函数执行完成,事件循环继续监听事件。 总的来说,Node.js 的事件循环负责监听事件,而 `http.createServer` 创建了一个事件监听器,用于监听 HTTP 请求事件,当有请求到达时,Node.js 就会触发相应的回调函数来处理这个请求。
2024-04-18
共1条回复

秋得法

提问者

2024-04-17

理解请求到达 `http.createServer` 的过程需要对 Node.js 的事件循环和网络模型有一定的了解。

1. **事件循环**:Node.js 使用事件驱动的非阻塞 I/O 模型。事件循环是 Node.js 的核心,它持续监听事件并处理它们。当事件发生时,事件循环会调用相应的回调函数。

2. **网络模型**:Node.js 基于事件驱动,采用单线程模型处理网络请求。当你调用 `http.createServer` 时,Node.js 开始监听指定的端口。当有请求到达时,Node.js 将触发 `request` 事件,并将请求对象和响应对象传递给你提供的回调函数。


具体的流程如下:

- 当你的 Node.js 服务器开始运行时,事件循环开始。

- `http.createServer` 被调用,开始监听指定的端口。

- 当有请求到达时,操作系统内核将请求放入 Node.js 的事件队列中。

- 事件循环检查事件队列,发现有请求事件时,将触发 `request` 事件。

- `http.createServer` 中传入的回调函数被调用,并传入请求对象 `req` 和响应对象 `res`。

- 你在回调函数中编写的逻辑处理请求,并生成响应。

- 当你调用 `res.end()` 完成响应时,响应会被发送给客户端。

- 回调函数执行完成,事件循环继续监听事件。



0
0

秋得法

提问者

2024-04-17

理解请求到达 `http.createServer` 的过程需要对 Node.js 的事件循环和网络模型有一定的了解。

1. **事件循环**:Node.js 使用事件驱动的非阻塞 I/O 模型。事件循环是 Node.js 的核心,它持续监听事件并处理它们。当事件发生时,事件循环会调用相应的回调函数。

2. **网络模型**:Node.js 基于事件驱动,采用单线程模型处理网络请求。当你调用 `http.createServer` 时,Node.js 开始监听指定的端口。当有请求到达时,Node.js 将触发 `request` 事件,并将请求对象和响应对象传递给你提供的回调函数。


具体的流程如下:

- 当你的 Node.js 服务器开始运行时,事件循环开始。

- `http.createServer` 被调用,开始监听指定的端口。

- 当有请求到达时,操作系统内核将请求放入 Node.js 的事件队列中。

- 事件循环检查事件队列,发现有请求事件时,将触发 `request` 事件。

- `http.createServer` 中传入的回调函数被调用,并传入请求对象 `req` 和响应对象 `res`。

- 你在回调函数中编写的逻辑处理请求,并生成响应。

- 当你调用 `res.end()` 完成响应时,响应会被发送给客户端。

- 回调函数执行完成,事件循环继续监听事件。

总的来说,Node.js 的事件循环负责监听事件,而 `http.createServer` 创建了一个事件监听器,用于监听 HTTP 请求事件,当有请求到达时,Node.js 就会触发相应的回调函数来处理这个请求。


0
0

Node.js+Express+Koa2+Nest.js 开发服务端

从入门到实战,一站式掌握 Node.js+Express+Koa2

4050 学习 · 2006 问题

查看课程