Heim > Backend-Entwicklung > PHP-Tutorial > Rückruffunktion in js zur Implementierung eines http-Servers

Rückruffunktion in js zur Implementierung eines http-Servers

不言
Freigeben: 2023-04-03 12:04:01
Original
1878 Leute haben es durchsucht

Der Inhalt, der in diesem Artikel mit Ihnen geteilt wird, befasst sich mit der Callback-Funktion in js, um einen HTTP-Server zu implementieren. Als nächstes werfen wir einen Blick auf den spezifischen Inhalt.

Netzwerkbetrieb

Verwenden Sie zunächst das http-Modul, um einen http-Server zu implementieren

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端口
Nach dem Login kopieren
rrree

Zugriff auf http://127.0. 0.1: 8124/ Hallo Wort zurückgeben

Einige API

http-Modul

Zwei Möglichkeiten,

  1. Bei Verwendung als Server erstellen Sie einen HTTP-Server, hören HTTP-Client-Anfragen ab und geben Antworten zurück.

  2. Bei Verwendung als Client eine HTTP-Client-Anfrage initiieren, um eine Antwort vom Server zu erhalten

Die Serverseite ist ereignisgesteuert Ja, Die Rückruffunktion wird beim Erstellen des Servers einmal aufgerufen, d Anfragetext.

Öffnen Sie die Entwicklertools des Browsers, wählen Sie das Netzwerkfenster aus, aktualisieren Sie dann die Seite, wählen Sie erneut eine Datei aus und im Header-Fenster werden die http-Header-Informationen der aktuellen Dateianforderung angezeigt


Zuerst die Anfrage header , gefolgt vom Anforderungstext
Wenn eine http-Anfrage an den Server gesendet wird, wird sie in einem Datenstrom von Anfang bis Ende gesendet. Nach dem Empfang des vollständigen Anforderungsheaders führt der http-Server die Ausführung aus eine Rückruffunktion,

PS C:\Users\mingm\Desktop\test> node main.js
Nach dem Login kopieren
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端口
Nach dem Login kopieren

Rückruffunktion
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' }
---------------
Nach dem Login kopieren
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("程序执行结束!");
Nach dem Login kopieren

Wenn Sie auf einen E/A-Vorgang stoßen, überspringen Sie zuerst die Ausführung und führen Sie den aktuellen Inhalt aus. Das Ergebnis ist also dieses, und dann wird das Ausführungsergebnis an die letzte Funktion in der Parameterliste übergeben, sodass die letzte Funktion die Callback-

http-Callback-Funktion ist, die

PS C:\Users\mingm\Desktop\test> node main.js
程序执行结束!
3333
null
33333333333333333333333333
3333
PS C:\Users\mingm\Desktop\test>
Nach dem Login kopieren

Ausführungsergebnis

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);
Nach dem Login kopieren
Diese Ausführung erfolgt zuerst bis

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
Nach dem Login kopieren

Da request.on auf die Rückgabe warten muss, wird die folgende Anweisung

console.log(body);
Nach dem Login kopieren
asynchron ausgeführt Anschließend wird der Inhalt zurückgegeben, die Anforderung ausgeführt, das Ergebnis an den letzten Parameter der Funktion zurückgegeben und die Ausführung abgeschlossen.

http-Antwort

Der Server gibt den vom Client angeforderten Anforderungstext so wie er ist an den Client zurück

console.log(444);
Nach dem Login kopieren
PS C:\Users\mingm\Desktop\test> node main.js
444444444444
22222222
33333333
555555
Nach dem Login kopieren
Das Schreiben ist etwas chaotisch

http Client

Knoten sendet eine http-Client-Anfrage

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);
Nach dem Login kopieren
Das Obige sendet eine http-Anfrage.

Verwandte Empfehlungen:

Axios-Quellcode-Analyse zur Implementierung einer HTTP-Anforderungsbibliothek

Das obige ist der detaillierte Inhalt vonRückruffunktion in js zur Implementierung eines http-Servers. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage