gpt4 book ai didi

javascript - Node.js httpserver.listen 方法歧义

转载 作者:搜寻专家 更新时间:2023-10-31 23:42:19 25 4
gpt4 key购买 nike

我一直在使用 Node.js,我想知道 listen 方法在事件循环方面到底做了什么。如果我有一个长时间运行的请求,是否意味着服务器永远不会监听,因为它一次只能做一项工作。

var http = require('http');
function handleRequest(request, response) {
response.end('Some Response at ' + request.url);
}
var server = http.createServer(handleRequest);
server.listen(8083, function() {
console.log('Listening...')
})

server.listen 是否在监听某个事件?

最佳答案

您可以将 server.listen() 视为启动您的网络服务器,以便它实际上在 TCP 级别监听传入请求。来自 .listen() 的 node.js http 文档:

Begin accepting connections on the specified port and hostname.

传递给 server.listen() 的回调是可选的。它只被调用一次以指示服务器已成功启动并且现在正在监听传入请求。它不是在每个新的传入请求上调用的。传递给 .createServer() 的回调是为每个新的传入请求调用的。

虽然由于 node.js 的单线程特性,但实际上只有一个请求同时执行 JS 代码,因此可以同时处理多个传入请求。

但是,长时间运行的请求通常大部分时间都是空闲的(例如等待数据库 I/O 或磁盘 I/O 或网络 I/O),因此其他请求可以在空闲时间内处理和运行。这就是 node.js 的异步特性,以及为什么使用 node.js 异步 I/O 编程而不是同步 I/O 处理很重要,因为异步 I/O 允许在 node.js 运行期间运行其他请求只是在等待 I/O。

关于javascript - Node.js httpserver.listen 方法歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30489818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com