http 서버를 구현하기 위한 js의 콜백 함수

不言
풀어 주다: 2023-04-03 12:04:01
원래의
1845명이 탐색했습니다.

이 글에서 공유한 내용은 http 서버를 구현하기 위한 js의 콜백 기능에 관한 내용입니다. 다음으로 구체적인 내용을 살펴보겠습니다.

네트워크 운영

먼저 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/를 방문하여 안녕하세요 단어를 반환합니다

일부 API

http 모듈

둘 이렇게

  1. 을 서버로 사용하게 되면 http 서버를 생성하고 http 클라이언트 요청을 듣고 응답을 돌려준다.

  2. 클라이언트로 사용하는 경우 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' }
---------------
로그인 후 복사

Callback이라는 콜백 기능을 수행합니다. function

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 작업 중에는 먼저 실행을 건너뛰고 현재 내용이 실행됩니다. 그래서 결과는 이렇고 그 다음 실행 결과는 매개변수 목록의 마지막 함수에 전달되므로 마지막 함수는 콜백

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
로그인 후 복사

를 요청하는 함수입니다. 이 실행은 비동기 실행이고, first Execu to

console.log(body);
로그인 후 복사

request.on은 return을 기다려야 하기 때문에 다음의

console.log(444);
로그인 후 복사

문을 비동기적으로 실행한 후 내용을 return한 후 request.on을 실행하고 그 결과를 다시 함수의 마지막 매개변수를 입력하면 실행이 완료됩니다.

http response

클라이언트가 요청한 요청 본문을 서버가 클라이언트에게 그대로 돌려준다

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);
로그인 후 복사

글이 좀 지저분하다

http client

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿