이 글에서 공유한 내용은 http 서버를 구현하기 위한 js의 콜백 기능에 관한 내용입니다. 다음으로 구체적인 내용을 살펴보겠습니다.
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/를 방문하여 안녕하세요 단어를 반환합니다
둘 이렇게
을 서버로 사용하게 되면 http 서버를 생성하고 http 클라이언트 요청을 듣고 응답을 돌려준다.
클라이언트로 사용하는 경우 http 클라이언트 요청을 시작하여 서버로부터 응답을 얻습니다.
서버 측은 이벤트 중심이며 서버 생성 시 콜백 함수는 한 번 호출됩니다. 이것은 이벤트 중심의
입니다. http 요청의 본질은 요청 헤더와 요청 본문으로 구성된 데이터 스트림입니다.
브라우저의 개발자 도구를 열고 네트워크 패널을 선택한 다음 페이지를 새로 고치고 파일을 다시 선택하면 헤더 창에 현재 파일 요청의 http 헤더 정보가 표시됩니다
요청 헤더가 먼저 오고 그 다음이 요청 본문입니다
http 요청은 서버를 사용할 때 전체 요청 헤더를 수신한 후 1바이트의 데이터 스트림으로 전송되며, 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 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>
필요할 때 /o 작업 중에는 먼저 실행을 건너뛰고 현재 내용이 실행됩니다. 그래서 결과는 이렇고 그 다음 실행 결과는 매개변수 목록의 마지막 함수에 전달되므로 마지막 함수는 콜백
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
를 요청하는 함수입니다. 이 실행은 비동기 실행이고, first Execu to
console.log(body);
request.on은 return을 기다려야 하기 때문에 다음의
console.log(444);
문을 비동기적으로 실행한 후 내용을 return한 후 request.on을 실행하고 그 결과를 다시 함수의 마지막 매개변수를 입력하면 실행이 완료됩니다.
클라이언트가 요청한 요청 본문을 서버가 클라이언트에게 그대로 돌려준다
PS C:\Users\mingm\Desktop\test> node main.js 444444444444 22222222 33333333 555555
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);
글이 좀 지저분하다
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 요청 라이브러리 구현 방법
위 내용은 http 서버를 구현하기 위한 js의 콜백 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!