‫Dieses Video ist ein weiteres wirklich spannendes Video,
‫denn jetzt werden wir unseren
‫allerersten echten Webserver erstellen, der Anfragen annehmen und
‫Antworten zurücksenden kann.
‫Und der erste Schritt besteht darin, ein weiteres Paket oder ein
‫weiteres Modul
‫einzubinden, und dieses heißt http.
‫Wir verwenden also
‫erneut die require-Funktion und benötigen dann das integrierte
‫http-Modul, das uns Netzwerkfähigkeiten wie den
‫Aufbau eines http-Servers bietet.
‫Lassen Sie uns diesen Code jetzt hier
‫auskommentieren, damit er uns nicht in die Quere kommt.
‫Lassen Sie uns hier eine Art Trennlinie erstellen.
‫Dieser ist also
‫abgelegt, und dieser ist für den Server.
‫Und jetzt müssen wir zwei Dinge tun, um
‫unseren Server zu bauen.
‫Zuerst erstellen wir einen
‫Server und dann starten wir den Server,
‫damit wir tatsächlich auf eingehende Anfragen hören können.
‫Wir verwenden unser http-Modul und genau wie zuvor haben wir eine Methode
‫verwendet, die sich auf diesem Objekt befindet.
‫So wie wir es mit dem fs-Modul gemacht haben.
‫Also http. createServer und
‫create server akzeptieren eine Callback-Funktion, die jedes Mal
‫ausgelöst wird, wenn eine
‫neue Anfrage unseren Server erreicht.
‫Und diese Callback-Funktion erhält
‫Zugriff auf zwei sehr wichtige und grundlegende Variablen.
‫Es ist die Anforderungsvariable und eine Antwortvariable.
‫Und gleich ein bisschen mehr über sie.
‫Also, Anfrage und
‫Antwort. Alles, was wir jetzt
‫tun möchten, ist, tatsächlich eine Antwort an den Client
‫zurückzusenden, und das tun wir mit res. das ist dieses Objekt hier, dieses Antwortobjekt, . end und dann 'Hallo
‫vom Server! '. Ende und dann 'Hallo vom Server! '.
‫Das ist also die Antwort, die wir zurücksenden werden.
‫Also noch einmal,
‫jedes Mal, wenn eine neue Anfrage unseren Server erreicht, wird diese Callback-Funktion
‫hier aufgerufen, und die Callback-Funktion hat Zugriff auf das Anfrageobjekt,
‫das alle möglichen Dinge wie die Anfrage-URL und
‫eine Menge anderer Dinge enthält.
‫Andererseits gibt uns dieses Response-Objekt hier
‫im Grunde viele Werkzeuge für den Umgang mit
‫der Response, also zum
‫Versenden der Response.
‫Die einfachste ist. end, und this end here,
‫wird die Benennung dieser Methode etwas später
‫etwas sinnvoller sein.
‫Im Moment wissen Sie nur, dass dies in diesem Fall der einfachste
‫Weg ist, eine sehr, sehr einfache Antwort zurückzusenden.
‫Das ist wirklich alles, was wir
‫tun müssen, um eine Klartextantwort zurückzusenden, wenn eine
‫bestimmte Anfrage eingeht.
‫Wenn Sie jetzt etwas verwirrt sind über all
‫diese Begriffe, wie eingehende Anfragen
‫oder das Senden von Antworten, oder sogar darüber, warum
‫wir tatsächlich Anfragen und Antworten hier auf unserem Server haben, dann
‫machen Sie sich keine Sorgen, denn wir haben eine
‫ganze Vorlesung vor uns darüber, wie das Web funktioniert,
‫wo wir alles über das Client-Server-Modell sprechen
‫werden und wie Netzwerkanwendungen im Allgemeinen funktionieren.
‫Auch in diesem Abschnitt liegt mein Hauptaugenmerk darauf, Ihnen
‫all das Zeug zu zeigen und es wirklich zum
‫Laufen zu bringen, und dann folgt
‫die Theorie etwas später.
‫Das ist also die Philosophie, die
‫ich in all meinen anderen Kursen verwendet habe, und
‫sie funktioniert wirklich gut, und
‫daher glaube ich, dass es eine gute Sache ist, dies auch hier zu tun.
‫Wie auch immer, das Erstellen
‫eines Servers war der erste Teil,
‫und jetzt besteht der zweite Teil darin, eingehende Anfragen vom Client abzuhören.
‫Dazu müssen wir nun tatsächlich das Ergebnis
‫dieses createServers hier in einer neuen Variable speichern.
‫Wir nennen es normalerweise Server, also ist
‫server das Ergebnis dieser createServer-Methode hier.
‫Es wird also einen
‫Server erstellen, und jetzt verwenden wir diesen Server und können darauf hören.
‫Listen akzeptiert einige Parameter. Der erste ist der Port,
‫und normalerweise ist der Port,
‫den wir in Note verwenden, zum Beispiel 8000.
‫Aber Sie werden andere Zahlen
‫wie 3000 oder 80 oder so ähnlich sehen.
‫Und falls Sie sich fragen, was ein Port
‫eigentlich ist, spielt es keine Rolle, aber Sie müssen nur wissen, dass
‫es sich im Grunde genommen um eine Unteradresse auf einem
‫bestimmten Host handelt, und der
‫Host ist das, was wir als nächstes angeben.
‫Wir müssen es eigentlich nicht angeben und verwenden
‫dann standardmäßig einen lokalen Host, aber wir
‫können es tatsächlich auch
‫explizit für den lokalen Host angeben.
‫Der lokale Host hat diese Adresse normalerweise standardmäßig, und der
‫lokale Host bedeutet einfach der aktuelle Computer.
‫Also der Computer, auf dem das Programm gerade läuft.
‫Dies ist wiederum
‫die Standard-IP-Adresse für diesen lokalen Host.
‫Dieser hier wird also auf eingehende Anfragen lauschen.
‫Also grundsätzlich den Server starten.
‫Und als optionales Argument können wir auch eine
‫Callback-Funktion übergeben, die
‫ausgeführt wird, sobald der Server
‫tatsächlich mit dem Zuhören beginnt.
‫Hier ist es also durchaus üblich, einfach eine Meldung anzuzeigen,
‫dass der Server gestartet wurde.
‫Nehmen wir also an, auf Port 8000 zu hören.
‫Und jetzt müssen wir nur noch zu
‫dieser URL auf unserem Computer auf Port 8000 gehen.
‫Bevor wir das tun können,
‫müssen wir natürlich die Note-Anwendung ausführen, also den
‫Index notieren. js, und hier haben wir unser Schloss.
‫Also auf Anfrage auf Port 8000 hören.
‫Und Sie sehen, dass
‫die App weiterläuft, also wurde sie vorher immer
‫sofort gestoppt, also hat sie ihre Arbeit
‫erledigt und dann die Anwendung beendet.
‫Im Moment tut es das nicht.
‫Das liegt an der sogenannten
‫Ereignisschleife, über die wir etwas später
‫in einem anderen Abschnitt dieses Kurses sprechen werden.
‫Aber egal, was die technischen Gründe dafür
‫sind, es ist offensichtlich, dass die App nicht
‫sofort beendet werden kann, da wir dann keine neuen Anfragen erhalten könnten.
‫Wenn wir also einen Server starten, kann Note den
‫Prozess nicht einfach beenden, also das Programm beenden, da das
‫ganze Ziel darin
‫besteht, auf den Eingang der Anforderungen zu warten.
‫Das ist es, was ich Ihnen als nächstes zeigen werde.
‫Lassen Sie uns zunächst nur die IP-Adresse auf Port 8000 öffnen.
‫Und dafür verwenden wir den Doppelpunkt und dann die Portnummer.
‫Dies ist also der Host, der aus dem lokalen Host,
‫dem Doppelpunkt und dann der Portnummer besteht.
‫Enter drücken und los gehts.
‫Also, hallo vom Server!
‫Und ja, es funktioniert wirklich.
‫Auf Ihrem Computer läuft ein echter Webserver
‫mit NoteJS, herzlichen Glückwunsch.
‫Gehen wir also hierher zurück und analysieren noch einmal, was hier passiert ist.
‫Wir haben unseren Server mit createServer erstellt
‫und eine Callback-Funktion übergeben, die jedes Mal ausgeführt wird, wenn
‫eine neue Anfrage den Server erreicht, und dann
‫haben wir angefangen, auf
‫der lokalen Host-IP und dann auf Port
‫8000 auf eingehende Anfragen zu warten.
‫Sobald dies alles am Laufen war, haben wir die Anfrage tatsächlich ausgeführt, indem
‫wir auf diese URL geklickt haben.
‫Im Grunde also, indem Sie den lokalen Host auf Port 8000 treffen.
‫Also wurde unter
‫der Haube von NoteJS ein Ereignis
‫ausgelöst, über das wir später noch einmal sprechen werden.
‫Wichtig ist hier aber, dass dieses Ereignis
‫es dann geschafft hat, dass diese Callback-Funktion aufgerufen wurde.
‫Und schließlich haben wir
‫dadurch diese Saite dann wieder zurückbekommen.
‫Schauen wir uns das Request-Objekt nur
‫aus Neugier an.
‫Wir müssen den Server schließen und neu
‫starten, da wir einige Änderungen am Code vorgenommen haben.
‫Und beachten Sie, wie ich dieses Mal Control C tatsächlich verwendet habe,
‫um die Anwendung zu beenden.
‫Denken Sie also daran, dass ich am Anfang, als wir
‫die Welligkeit verwendet haben, Control D verwendet
‫habe, um sie zu beenden.
‫Aber jetzt, wenn wir
‫ein Note-Programm haben, das so läuft, müssen wir
‫Control C verwenden, um dieses Programm grundsätzlich zu unterbrechen.
‫Deshalb habe ich hier Control C verwendet und während
‫des restlichen
‫Kurses, wenn ich ein Programm beenden möchte, werde
‫ich immer Control C verwenden.
‫Das ist also wieder Kontrolle und nicht Befehl C.
‫Auch auf einem Mac müssen Sie Control C verwenden.
‫Machen wir das jetzt noch einmal, wir erhalten die gleiche Antwort,
‫aber jetzt sollten wir etwas in der Konsole haben.
‫Das hier ist also das Request-Objekt, und wie ich bereits erwähnt
‫habe, gibt es hier eine Menge Zeug.
‫Du siehst es?
‫All das passt nicht einmal wirklich in die Konsole.
‫Ich glaube, ich
‫kann Ihnen nicht einmal all die coolen Daten zeigen, die darin enthalten sind.
‫Eigentlich haben wir hier einige Header, also haben wir
‫den Host und hier haben wir einige...
‫Auch hier haben
‫wir einige http-Header, über die wir, denke ich,
‫im nächsten Video sprechen werden.
‫Wie auch immer, hier ist es wichtig,
‫dass wir wirklich Zugriff auf alle
‫möglichen Dinge haben, wenn wir die Anfrage bearbeiten und die Antwort senden.
‫Ist hier egal, lass uns das
‫tatsächlich loswerden, speichern, dann beenden und neu starten.
‫Und jetzt, um dieses Video zu
‫beenden, möchte ich Ihnen zeigen, was wir in den nächsten
‫Vorlesungen bis zum Ende
‫dieses Abschnitts tatsächlich aufbauen werden.
‫Es ist also diese kleine lustige App namens Node Farm.
‫Wir haben hier ein paar Produkte,
‫und all dies haben wir hier mit einer sehr einfachen HTML-Vorlage erstellt,
‫und Sie können dann auf den Link klicken
‫und Sie gelangen
‫im Grunde zur Detailseite für dieses Produkt,
‫in diesem Fall die Avocados.
‫Es hat eine Menge Daten hier,
‫eine Schaltfläche, die nichts tut, und dann können
‫wir zur Seite zurückkehren.
‫Also Avocados, dann haben wir zum Beispiel
‫den Käse, und der hat
‫dann natürlich für jedes dieser Produkte andere Daten.
‫Es hat also dieses
‫schöne frische, verrückte Design, damit es ein bisschen
‫knallt, und ja, ich denke, das ist ein lustiges kleines Projekt.
‫Und wir werden gleich im nächsten
‫Video mit dem Bau beginnen.