您好,欢迎访问一九零五行业门户网

js中回调函数实现一个http服务器

本篇文章分享给大家的内容是关于js中回调函数实现一个http服务器,内容很详细,接下来我们就来看看具体的内容,希望可以帮助到大家。
网络操作首先使用http模块实现一个http服务器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端口
ps c:\users\mingm\desktop\test> node main.js
访问http://127.0.0.1:8124/ 返回hello word
一些apihttp模块两种方式,
作为服务器端使用的时,创建一个http服务器,监听http客户端请求,并返回响应。
作为客户端使用的时候,发起http客户端请求,用来获得服务器端的响应
服务器端的是以事件作为驱动的,创建服务器时的回调函数就会被调用一次,即,这是事件驱动
http请求头http的请求本质是数据流,由请求头和请求体组成。
打开浏览器的开发者工具,选择network面板,然后,刷新页面,再次,选择一个文件,在headers窗口中,显示出当前文件请求的http头部信息
<img src="https://melovemingming-125387...;>
同样,火狐的也一样
<img src="https://melovemingming-125387...;>
先是请求头,后是请求体
http请求发送给服务器时,是从头到尾一个一个字节以数据流的方式发送,http模块创建的http服务器在接收到完整的请求头以后,进行回调函数,
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.jsget--------------{ 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(程序执行结束!);
ps c:\users\mingm\desktop\test> node main.js程序执行结束!3333null333333333333333333333333333333ps c:\users\mingm\desktop\test>
当遇到需要i/o操作的时候,先跳过执行,在执行当前的内容。所以结果为此,然后在将执行完成的结果传给参数列表的最后一个函数,所以最后一个函数为回调
http的回调函数,请求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);
执行结果
ps c:\users\mingm\desktop\test> node main.jsget{ 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[]444444444444455555555555222222222222222get{ 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[]444444444444455555555555222222222222222
此执行为异步执行,先执行到
console.log(body);
由于request.on需要等待返回,所以异步执行下方的语句
console.log(444);
接着返回内容,再执行request.on,将结果通知回到函数的最后一个参数,然后执行完毕。
http响应服务端原样将客户端请求的请求体,返回给客户端
ps c:\users\mingm\desktop\test> node main.js4444444444442222222233333333555555
var http = require(http);http.createserver(function (request, response){    console.log(444444444444);    response.writehead(200, { 'content-type': 'text/plain' });                    // 为响应头,即原路发送给客户端                    request.on(                        data,                         function (chunk) {                            response.write(chunk);                            console.log(111111);                    });                    console.log(22222222);                    request.on('end', function() {response.end();console.log(555555)});                    console.log(33333333);                }).listen(8124);
写的有点乱
http客户端node发送一个http客户端请求
var options = {    hostname: 'www.iming.info',    port: 80,    // 端口为80    path: '/upload',    // 请求的路径    method: 'post',        // 请求的方法为post方法    headers: {        'content-type': 'application/x-www-form-urlencoded'    // 头部信息    },}var http = require('http');var request = http.request(options, function (response) {});request.write('hello word!');request.end();
以上发送了一个http请求。
相关推荐:
axios源码解析如何实现一个http请求库
以上就是js中回调函数实现一个http服务器的详细内容。
其它类似信息

推荐信息