请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答 回答被采纳积分+3

4回答

提问者 秋得法 2024-04-18 09:00:34

理解请求到达 `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 回复 有任何疑惑可以回复我~
双越 2024-04-18 08:55:57

那得去看 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 09:01:10
提问者 秋得法 2024-04-17 20:35:58

理解请求到达 `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 回复 有任何疑惑可以回复我~
提问者 秋得法 2024-04-17 20:35: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 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信