Node.js als HTTP-Server
Willemers Informatik-Ecke
Installation von node.js Umgang mit den Anfrage- und Antwortparametern

Durch die Einbindung des HTTP-Moduls kann ein HTTP-Server erstellt werden.
const http = require("http"); // Einbinden von http
  
var server = http.createServer(requestCallback);
Ein http-Server wird erzeugt und in der Variablen server abgelegt. Für Aktivitäten des Servers wird die Funktion requestCallback übergeben. Der Server wird sie aufrufen, sobald ein Client den Server aktiviert. Da sie erst bei einem späteren Ereignis aktiv wird, nennt man eine solche Funktion Callback-Funktion. Sie wird weiter unten näher beschrieben.

Nachdem der Server erzeugt ist, wird er mit dem Aufruf von listen gestartet und mit einem festgelegten Port und einem Netzwerkadapter verbunden. Als dritter Parameter wird wieder eine Funktion aufgerufen, die bei Start des Servers aktiv wird.

const http = require("http"); // Einbinden von http
  
var server = http.createServer(requestCallback);
server.listen(8080, "localhost", listener);
Das Programm wird daraufhin blockieren. Der Port wird hier mit 8080 festgelegt und als Netzwerkadapter einfach localhost verwendet. Bei einem Gerät mit mehreren Netzwerkanschlüssen kann hier dafür gesorgt werden, dass der Server nur über eine Schnittstelle erreichbar ist.

Callback-Funktion für createServer

Die Callback-Funktion für createServer muss zwei Parameter aufweisen.
  1. Der erste Parameter enthält die Details zu der Anfrage des Clients und wird darum üblicherweise request oder auch kurz req genannt.
  2. Der zweite Parameter enthält die Antwort des Servers und wird durch die Callback-Funktion gefüllt.
function requestCallback(request, response) {
    // In den Response-Kanal wird geschrieben
    response.write("Hallo Welt");
    // Der Response-Kanal wird abgeschlossen
    response.end();
}
Im ersten Versuch werden die Daten des Clients nicht näher untersucht und damit bleibt der Parameter request ungenutzt. Als response wird eine Zeichenkette (Hallo Welt) per write in die Variable response geschrieben. Hier könnte beliebiger HTML-Code stehen. Mit dem Aufruf von end wird die Ausgabe abgeschlossen.

Callback-Funktion für listen

Die Funktion listener wird bei Start des Servers mit listen aufgerufen. Hier kann eine Meldung auf dem Bildschirm ausgegeben werden.
function listener() {
    console.log("Server gestartet");
}

Anonyme Funktionen

Da die Callback-Funktionen nicht nur an einer Stelle aufgerufen werden, kann sie auch direkt im Parameter definiert werden.
server.listen(8080, "localhost", listener);

function listener() {
    console.log("Server gestartet");
}
Die Funktion wird direkt bei Aufruf implementiert.
server.listen(8080, "localhost", function () {
    console.log("Server gestartet");
}
);
Da die Funktion nur hier verwendet wird, kann auf den Namen verzichtet werden.

Auf die gleiche Art und Weise wird auch createServer mit seiner Callback-Funktion vereint.

var server = http.createServer(function(request, response) {
    response.write("Hallo Welt");
    response.end();
});
Wer damit angeben will, dass er den Begriff Lambda schon einmal gehört hat, kann den sogenannten Fat-Arrow verwenden, der lediglich verschleiert, dass es sich um eine Funktion handelt. Dazu wird das Schlüsselwort function entfernt und hinter der Parameterklammer ein Gleichheitszeichen und ein Größerzeichen kombiniert.
var server = http.createServer(function(request, response) {
// Syntaktische Variante einer anonymen Funktion
var server = http.createServer((request, response) => {
Das Gesamtkunstwerk sieht (ohne syntaktischen Zucker) so aus:
const http = require("http"); // Einbinden von http
  
var server = http.createServer(function(request, response) {
    response.write("Hallo Welt");
    response.end();
});

server.listen(8080, "localhost", function() {
    console.log("Server gestartet");
});

Start und Test des HTTP-Servers

Mit dem Aufruf über node wird der Server gestartet. Er blockiert dabei die Terminalsitzung, da ein Server dauernd läuft.
node httpserver.js
Nun läuft der Server im Hintergrund und wartet auf Anfragen über den Port 8080. Um das zu testen, wird ein Browser gestartet und als Adresse localhost:8080 eingegeben. Es sollte "Hallo Welt" auf dem Browser erscheinen.