Home > Article > Backend Development > Callback function in js to implement an http server
The content shared with you in this article is about implementing an http server with callback function in js. The content is very detailed. Next, let’s take a look at the specific content. I hope it can help everyone.
var http = require('http'); // 使用http模块 http.createServer ( function (request, response) { response.writeHead(200, {'Content-Type': 'text-plain'}); // http响应头部 response.end('hello word\n'); // 返回的内容 } ).listen(8124); // 监听8124端口rrree
Access http://127.0.0.1: 8124/ Return hello word
Two ways,
When used as a server, create an http server, listen to http client requests, and return responses.
When used as a client, initiate an http client request to obtain a response from the server
The server is event-driven Yes, the callback function when creating the server will be called once, that is, this is event-driven
The essence of http request is a data stream, consisting of a request header and a request body .
Open the browser's developer tools, select the network panel, then refresh the page, select a file again, and in the headers window, display the http header information of the current file request
First the request header , followed by the request body
When an http request is sent to the server, it is sent in a data stream one byte from beginning to end. The http server created by the http module performs a callback function after receiving the complete request header,
PS C:\Users\mingm\Desktop\test> node main.js
var http = require('http'); // 使用http模块 http.createServer ( function (request, response) { var body = []; console.log(request.method); console.log("--------------"); console.log(request.headers); console.log("---------------"); } ).listen(8124); // 监听8124端口
PS C:\Users\mingm\Desktop\test> node main.js GET -------------- { host: '127.0.0.1:8124', connection: 'keep-alive', 'cache-control': 'max-age=0', 'upgrade-insecure-requests': '1', dnt: '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-CN,zh;q=0.9' } ---------------
var fs = require("fs"); fs.readFile('input.txt', function (err, data) { console.log("3333"); console.log(err); console.log(data.toString()); console.log("3333"); }); console.log("程序执行结束!");
When encountering an i/o operation, skip execution first and execute the current content. So the result is this, and then the completed execution result is passed to the last function in the parameter list, so the last function is the callback function of callback
PS C:\Users\mingm\Desktop\test> node main.js 程序执行结束! 3333 null 33333333333333333333333333 3333 PS C:\Users\mingm\Desktop\test>
execution result
var http = require('http'); http.createServer( function (request, response) { var body = []; console.log(request.method); console.log(request.headers); console.log(1111111111); console.log(body); request.on('end', function () { body = Buffer.concat(body); console.log(222222222222222); console.log(body.toString()); }); console.log(4444444444444); response.writeHead(200, {'Content-Type': 'text-plain'}); response.end('hello word\n'); console.log(55555555555); } ).listen(8124);
This execution is asynchronous. It is executed first to
PS C:\Users\mingm\Desktop\test> node main.js GET { host: '127.0.0.1:8124', connection: 'keep-alive', 'cache-control': 'max-age=0', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36', dnt: '1', accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-CN,zh;q=0.9' } 1111111111 [] 4444444444444 55555555555 222222222222222 GET { host: '127.0.0.1:8124', connection: 'keep-alive', pragma: 'no-cache', 'cache-control': 'no-cache', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36', dnt: '1', accept: 'image/webp,image/apng,image/*,*/*;q=0.8', referer: 'http://127.0.0.1:8124/', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-CN,zh;q=0.9' } 1111111111 [] 4444444444444 55555555555 222222222222222
Since request.on needs to wait for the return, the following statement is asynchronously executed.
console.log(body);
Then the content is returned, and then request is executed. on, notify the result back to the last parameter of the function, and then complete the execution.
The server returns the request body requested by the client to the client as it is
console.log(444);rrree
The writing is a bit messy
node sends an http client request
PS C:\Users\mingm\Desktop\test> node main.js 444444444444 22222222 33333333 555555
The above sends an http request.
Related recommendations:
axios source code analysis how to implement an HTTP request library
The above is the detailed content of Callback function in js to implement an http server. For more information, please follow other related articles on the PHP Chinese website!