Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果在NodeJS中创建服务器时删除res.end(),会发生什么?_Javascript_Node.js_Http - Fatal编程技术网

Javascript 如果在NodeJS中创建服务器时删除res.end(),会发生什么?

Javascript 如果在NodeJS中创建服务器时删除res.end(),会发生什么?,javascript,node.js,http,Javascript,Node.js,Http,我正在学习使用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(

我正在学习使用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()
,运行它,我看到的是浏览器不断加载,没有显示任何内容(甚至是白色空白页)。我不知道后面发生了什么)

感谢您的帮助

res.send()

正在向客户端发送响应。如果不将响应发送回客户端,则不会收到任何要在浏览器中呈现的响应

您必须从指定的每个路由向客户端发送响应。在您的示例中,当调用服务器的根地址时,将执行传递给
createServer()
方法的函数。如果您在本地运行此操作,则将是
localhost:3000

res.send()

正在向客户端发送响应。如果不将响应发送回客户端,则不会收到任何要在浏览器中呈现的响应


您必须从指定的每个路由向客户端发送响应。在您的示例中,当调用服务器的根地址时,将执行传递给
createServer()
方法的函数。如果您在本地运行此程序,那么这将是
localhost:3000

首先让我们逐行中断您的代码

var http=require('http')

这是从node.js内置库导入
http
库。可用于执行
http
相关任务。创建服务器就是其中一项任务

server.listen(3000)
将启动一个
http
服务器,该服务器将侦听来自
localhost:3000
http
请求。每次在浏览器中点击此地址时,都会执行
fn
功能。不管你走哪条路
fn
将对
localhost:3000
以及
localhost:3000/anything/else

当在浏览器中点击
localhost:3000
执行此函数时,通过
http
库向此函数提供两个
对象
请求(
req
)和响应(
res
req
包含与请求相关的所有数据,如URL、正文等。Response包含可用于生成响应的方法,该响应将传递给客户端或浏览器(发起请求的用户)

这里,首先将头写入响应,然后通过
res.end()
通知
http
,我们已经完成了响应的编写,请将其发送到客户端。请注意,一旦你写完回复,你就可以在回复中写下任何其他内容


关于删除
res.end()
您已经回答了浏览器一直在加载的问题。实际上,浏览器正在等待服务器的响应。若要删除
res.end()
,服务器将无法通知客户端响应写入已完成。

首先让我们逐行中断代码

var http=require('http')

这是从node.js内置库导入
http
库。可用于执行
http
相关任务。创建服务器就是其中一项任务

server.listen(3000)
将启动一个
http
服务器,该服务器将侦听来自
localhost:3000
http
请求。每次在浏览器中点击此地址时,都会执行
fn
功能。不管你走哪条路
fn
将对
localhost:3000
以及
localhost:3000/anything/else

当在浏览器中点击
localhost:3000
执行此函数时,通过
http
库向此函数提供两个
对象
请求(
req
)和响应(
res
req
包含与请求相关的所有数据,如URL、正文等。Response包含可用于生成响应的方法,该响应将传递给客户端或浏览器(发起请求的用户)

这里,首先将头写入响应,然后通过
res.end()
通知
http
,我们已经完成了响应的编写,请将其发送到客户端。请注意,一旦你写完回复,你就可以在回复中写下任何其他内容


关于删除
res.end()
您已经回答了浏览器一直在加载的问题。实际上,浏览器正在等待服务器的响应。如果您要删除
res.end()
,服务器将无法通知客户端已完成响应写入。

试试看……我相信您对每条写入指令所做的是将数据放入流中,但只有在关闭流后才会写入,刷新或调用结束。试试看……我相信您对每个写入指令所做的是将数据放入流中,但只有在关闭流、刷新流或调用结束后才会写入。只需要最后一段来回答问题。我不知道你为什么把所有其他的东西放在前面,让你看不到真正的答案。我想,OP正在学习Node.js,我应该让他了解一下
http
@Vipin Kumar非常感谢你的回答。我完全满意。因此,根据您的回答,
res.end()
意味着向客户端发送响应(包括标题+额外文本/数据等),并通知服务器响应已完成,对吗?非常感谢:这里只需要最后一段
var server = http.createServer(fn).
server.listen(3000);
function(req, res){
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end();
}
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end();