response.writeHead and response.end in NodeJs

后端 未结 5 1576
予麋鹿
予麋鹿 2020-12-25 10:59
var https = require(\'https\');
var fs = require(\'fs\');

var options = {
  key: fs.readFileSync(\'test/fixtures/keys/agent2-key.pem\'),
  cert: fs.readFileSync(\'t         


        
相关标签:
5条回答
  • 2020-12-25 11:14

    The res.writeHead method is for returning a status code to the browser, and the browser will throw an error if it is a client-side status code or server-side status code. The res.end method is to make sure the response isn't returned before it might be ready, in case of nested code or otherwise.

    The purpose of the options object is to make sure the page has a valid key and certificate before declaring that the page is encrypted under https.

    0 讨论(0)
  • 2020-12-25 11:29

    response.writeHead(200) sends a response header to the request. The status code is a 3-digit HTTP status code, like 404.

    This method must only be called once on a message and it must be called before response.end() is called.

    If you call response.write() or response.end() before calling this, the implicit/mutable headers will be calculated and call this function for you.

    0 讨论(0)
  • 2020-12-25 11:30

    As far as i know if you don't put the response.end() at the end then your web page will go on loading thus the response.end() is used to tell the server that the data has been loaded

    0 讨论(0)
  • 2020-12-25 11:32

    In your code, the writeHead() is called to write the header of the response, that the application will serve to the client. The end() method both sends the content of the response to the client and signals to the server that the response (header and content) has been sent completely. If you are still going to send anything else, you should call write() method of res response object instead.

    The options JSON object is a modifier that you may use, to override the default behaviour of the createServer() method. In your code's case:
    + key: Private key to use for SSL (default is null)
    + cert: Public x509 certificate to use (default is null)

    You can find more in this section of the Node.js API doc about the response.writeHead() method.
    You can find more in this section of the Node.js API doc about the https.createServer() method.

    0 讨论(0)
  • 2020-12-25 11:40

    Those calls to writeHead and end are not being done in the createServermethod, but rather in a callback.

    It's a bit easier to see if you split out the callback into a separate function:

    function handleRequest(req, res) {
      res.writeHead(200);
      res.end("hello world\n");
    }
    
    https.createServer(options, handleRequest).listen(8000);
    

    So here we define a handleRequest function and then pass that into the createServer call. Now whenever the node.js server we created receives an incoming request, it will invoke our handleRequest method.

    This pattern is very common in JavaScript and is core to node.js' asynchronous event handling.

    0 讨论(0)
提交回复
热议问题