首页 > 开发 > JavaScript > 正文

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

2020-03-22 20:24:47
字体:
来源:转载
供稿:网友
本篇文章分享给大家的内容是关于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.js--------------{ 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程序执行结束!33333333333333333333333333PS 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.js{ 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 }1111111111444444444444455555555555222222222222222{ 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 }1111111111444444444444455555555555222222222222222

此执行为异步执行,先执行到

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服务器的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表