Reputation: 4398
I have several Express applications, and I see that in some modules, res.end()
is called at the end of a request handler (after res.send
or res.json
), while in others, it isn't called.
For example:
app.get('/test', function(req, res) {
res.send('Test', 200);
});
or:
app.get('/test', function(req, res) {
res.send('Test', 200);
res.end();
});
Both cases work, but I'm afraid about leaks or running out file descriptors or something like that, when I run many requests. Which one is "more correct"?
Upvotes: 104
Views: 62602
Reputation: 297
one example where you must call end() function is when you send buffer as a file to download.
res.write(buffer);
res.end();
Upvotes: 12
Reputation: 60134
res.end([data] [, encoding])
Ends the response process. This method actually comes from Node core, specifically the response.end() method of http.ServerResponse.
Use to quickly end the response without any data.
If you need to respond with data, instead use methods such as
res.send() and res.json().
Upvotes: 6
Reputation: 19907
The answer to your question is no. You don't have to call res.end()
if you call res.send()
. res.send()
calls res.end()
for you.
Taken from /lib/response.js, here is the end of the res.send()
function:
//. . .
// respond
this.end(head ? null : body);
return this;
}
Upvotes: 130