- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在 Node 的幕后,http
模块的 createServer
方法(及其回调)如何与事件循环交互?是否可以在用户空间中自行构建类似于 createServer
的功能,或者这是否需要更改 Node 的底层系统代码?
也就是我对node的event loop的大致理解是
我仍然有点模糊的是 createServer
如何适应事件循环。如果我做这样的事情
var http = require('http');
// create an http server and handle with a simple hello world message
var server = http.createServer(function (request, response) {
//...
});
我告诉 Node 在收到 HTTP 请求时运行我的回调。这似乎与我理解的事件循环模型不兼容。似乎有一些非用户区和非事件循环正在监听 HTTP 请求,然后在请求到来时运行我的回调。
换句话说——如果我考虑实现我自己的 createServer
版本,我想不出办法来实现,因为我安排的任何回调都将运行一次。 createServer
是否仅使用 setTimeout
或 setInterval
不断重新检查传入的 HTTP 请求?或者是否有一些更低级别、更有效的事情在进行。我知道我不需要完全理解这一点来编写高效的 Node 代码,但我很好奇底层系统是如何实现的。
(我尝试在 node source 中跟进,但进展缓慢,因为我不熟悉 Node 模块系统,也不熟悉系统代码深处编码模式的遗留假设)
最佳答案
http.createServer
是一种方便的方法,用于创建新的 http.Server()
并将回调作为事件监听器附加到 request
事件。当然,node http 库也实现了协议(protocol)解析。
事件循环没有持续轮询, Node 正在等待 C++ tcp 绑定(bind)在套接字上接收数据,然后将该数据编码为 缓冲区
到您的回调。
如果您要实现自己的 http 解析器,您将从 net.Server
对象作为基础开始。在此处查看 Node 的实现:https://github.com/joyent/node/blob/master/lib/_http_server.js#L253
关于javascript - Node JS、createServer 和事件循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304401/
我试图了解集群的工作人员如何处理 http 请求。我从 http://nodejs.org/api/cluster.html 的代码开始并在其周围添加了一些日志记录。 我将以下代码放入 server.
我无法理解 node.js 中 net.createserver 和 http.createserver 之间的区别。 我已阅读位于这两个网址的两种方法的文档 https://nodejs.org/a
在浏览了 node.js 文档后,我意识到 创建服务器 上的方法http 模块已更新以接收 选项 争论。如果我没记错的话,以前的 node.js 版本中没有包含它 http.createServer(
我是nodejs的初学者。我尝试了下面的代码。但服务器没有监听端口和主机。 var fs = require("fs"); var config = JSON.parse(fs.readFileSyn
我正在创建一个尝试学习 Node.js 的基本应用。 我需要加载一个 html 格式的起始页(带有一些样式和 js 脚本)。 以后我需要从 js 调用 ajax 到 Node,我发现我应该使用 exp
我在 Node 中运行这个脚本: var http = require('http'); var server = http.createServer(function (request, respo
我在全局安装了 express 并且 npm 安装了我的 express 应用程序,但智能或应用程序都没有工作(我在 mac OS Yosemite 上使用 visual studio code)。
我试图将 Node JS 服务器包装在 JS 对象中,为了做到这一点,我编写了这个构造函数: function staticServerObj (rootFolder) { this.root
我有这个代码: var gqlServer =require('./server.js') var server=gqlServer() var port = process.env.PORT||50
这个问题已经有答案了: How to access the correct `this` inside a callback (15 个回答) 已关闭 3 年前。 好的,这就是我所拥有的: const
我正在尝试使用 Node.JS 创建一个基本的网络服务器,但在正确提供图像时遇到了问题。 var server = http.createServer(function (request, respo
我正在参加 learnyounode 研讨会,我对其中一个官方解决方案中的这段代码感到好奇。 var server = http.createServer(function (req, res) {
我有两个 js 文件 screenshot.js 和 main.js,我想从 screenshot.js 返回 JSON 到 main.js,但是当你运行 console.log( this.resu
当我想使用express.Application作为http.createServer的参数时,出现此错误: 错误 TS2345:“应用程序”类型的参数无法分配给“(请求:IncomingMessag
当涉及到套接字时,我习惯于 perl 和 POE 编程,并且我正在考虑将 node.js 用于不基于 Web 的应用程序服务器。我通过编写网页用户界面获得了 JavaScript 知识。 我一直在使用
这个问题在这里已经有了答案: "Cannot GET /" with Connect on Node.js (12 个答案) 关闭 8 年前。 我正在尝试使用 AngularJS 书籍 (serve
在 Node 的幕后,http 模块的 createServer 方法(及其回调)如何与事件循环交互?是否可以在用户空间中自行构建类似于 createServer 的功能,或者这是否需要更改 Node
我正在尝试在网站上设置登录系统。 为此,我必须仅加载 http cookie。 为了加载它们,我必须在 https 启动时通过 createServer 函数中的响应对象将它们发送回客户端。 我已经通
我一直在研究这个基本示例,以便在 Node 中设置一个简单的服务器,但是我真的很难理解“请求”和“响应”参数的来源。它们指向哪里以及如何指向? // Load the http module to c
美好的一天, 我正在玩这里找到的例子:PHP Socket Server vs node.js: Web Chat . 使用 gMUD(类似 telnet 的客户端)连接到我的服务器,我似乎无法检测客
我是一名优秀的程序员,十分优秀!