我正在学习使用NodeJS创建一个简单的服务器。这是我从材料中提取的代码:
var http = require('http');
var server = http.createServer(function(req, res){
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end();
});
server.listen(3000);
此示例中res.end()
做了什么?我每次创建服务器时都必须使用res.end()
吗?如果我从上面的代码中删除res.end()
,会发生什么?
(我已经尝试从代码中删除res.end()
,运行它,我看到的是浏览器不断显示任何内容(即使是白色的空白页面)也不断加载。我不知道是什么发生在后面)
感谢任何帮助!
答案 0 :(得分:1)
res.send()
向客户发送回复。如果您没有将回复发送回客户端,您将无法在浏览器中收到任何回复答案。
您必须从指定的每条路线向客户发送回复。在您的示例中,当您调用服务器的根地址时,将传递您传递给createServer()
方法的函数。如果您在本地运行此操作,则为localhost:3000
答案 1 :(得分:1)
首先让我们逐行破解您的代码
var http = require(' http');
这是从构建库中的node.js导入http
库。哪些可用于执行http
相关任务。创建服务器就是其中之一。
var server = http.createServer(fn). server.listen(3000);
server.listen(3000)
将启动一个http
服务器,该服务器将监听来自http
的{{1}}个请求。每次在浏览器中点击此地址时,都会执行localhost:3000
功能。无论你遇到什么路线。 fn
以及fn
localhost:3000
localhost:3000/anything/else
当您在浏览器中点击function(req, res){
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end();
}
时执行此功能时,会通过{向此功能提供两个localhost:3000
请求(objects
)和响应(req
) {1}}库。 res
包含与URL,Body等请求相关的所有数据.Response包含可用于构建传递给客户端或浏览器(已发起请求)的响应的方法。
http
首先,标题写入响应,然后通过req
通知res.writeHead(200, {'Content-Type': 'text/plain'});
res.end();
我们已完成写入响应,请将其发送给客户端。请注意,一旦您完成了回复,您可以在回复中写下任何其他内容。
关于删除http
,您已经回答了浏览器继续加载的问题。实际上,浏览器正在等待来自服务器的响应。如果您要删除res.end()
,服务器将无法通知客户已完成响应写入。