Node.js - 新客户请求时到底发生了什么
Node.js - what exactly happens upon a new client request
我想更准确地了解当服务器在 Node.js 服务器上收到客户端请求时会发生什么。对于更传统的服务器,会创建一个新线程来处理新的客户端会话。
但是在 Node.js 和其他事件循环风格的服务器中,到底发生了什么?代码库的哪一部分首先被执行?使用节点,我几乎可以肯定 http 模块中的某些内容首先处理新请求。
我想了解更多有关这两种客户端连接处理方式的比较和对比方式的详细信息。
简而言之:
- 节点使用 libuv manage incoming connections and data events
- 事件放在 queue 中,在下一个 tick of the event loop
中处理
- 当字节开始到达时,它们被送入 native-code http parser
- 解析器在 JS-land 中使用 header 内容调用回调
- 其余JS HTTP代码将请求分派给用户代码,可能是Express
我想更准确地了解当服务器在 Node.js 服务器上收到客户端请求时会发生什么。对于更传统的服务器,会创建一个新线程来处理新的客户端会话。 但是在 Node.js 和其他事件循环风格的服务器中,到底发生了什么?代码库的哪一部分首先被执行?使用节点,我几乎可以肯定 http 模块中的某些内容首先处理新请求。
我想了解更多有关这两种客户端连接处理方式的比较和对比方式的详细信息。
简而言之:
- 节点使用 libuv manage incoming connections and data events
- 事件放在 queue 中,在下一个 tick of the event loop 中处理
- 当字节开始到达时,它们被送入 native-code http parser
- 解析器在 JS-land 中使用 header 内容调用回调
- 其余JS HTTP代码将请求分派给用户代码,可能是Express