js接收php 回调,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

一些api

http模块

两种方式,作为服务器端使用的时,创建一个http服务器,监听http客户端请求,并返回响应。

作为客户端使用的时候,发起http客户端请求,用来获得服务器端的响应

服务器端的是以事件作为驱动的,创建服务器时的回调函数就会被调用一次,即,这是事件驱动

http请求头

http的请求本质是数据流,由请求头和请求体组成。

打开浏览器的开发者工具,选择network面板,然后,刷新页面,再次,选择一个文件,在headers窗口中,显示出当前文件请求的http头部信息

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("程序执行结束!");PS C:\Users\mingm\Desktop\test> node main.js

程序执行结束!

3333

null

33333333333333333333333333

3333

PS 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

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

此执行为异步执行,先执行到console.log(body);

由于request.on需要等待返回,所以异步执行下方的语句console.log(444);

接着返回内容,再执行request.on,将结果通知回到函数的最后一个参数,然后执行完毕。

http响应

服务端原样将客户端请求的请求体,返回给客户端PS C:\Users\mingm\Desktop\test> node main.js

444444444444

22222222

33333333

555555var 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请求。

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值