Kapitel 1
Wenn der Server Neuigkeiten hat
Willkommen im Kurs
Hallo, ich bin Erik. Ich schreibe und pflege diesen Kurs, zusammen mit dem Rest von Python Land.
In
Was du baust
Der Kurs folgt einem Projekt: einer Anzeigetafel für einen Quizabend. Mehrere Zuschauer sehen jede Änderung des Punktestands, sobald sie passiert, und ein Punktezähler, der ein geheimes Token besitzt, ist der Einzige, der einen Punktestand ändern darf. Jede Nachricht ist ein kleines Stück type, und die Nachrichten des Servers tragen zusätzlich eine version.
Der Kurs besteht aus zwei Hälften.
| Kapitel | Was du baust |
|---|---|
| 1 | warum es WebSockets gibt: was Polling kostet und was zwei Notlösungen verbessern |
| 2 bis 5 | den |
| 6 bis 10 | die Anzeigetafel mit der Bibliothek websockets: viele Zuschauer, langsame und verlorene Verbindungen, eine Token-Prüfung und schließlich ein getesteter Server und Client |
| 11 | ein Vorgeschmack auf async: derselbe Handler, gelesen und mit async def neu geschrieben |
| 12 | wie es weitergeht |
Der Code, den du in den Kapiteln 2 bis 5 schreibst, ist ein Lern-Codec: Er zeigt dir jedes Byte, damit du weißt, was eine Bibliothek für dich erledigt, und er soll keine Bibliothek ersetzen. Ab Kapitel 6 verwendest du stattdessen das Paket websockets. Es ist in deiner Sandbox bereits installiert.
Wo dein Code läuft
Kein Browser und keine öffentliche Adresse wird sich je mit dem Code verbinden, den du auf dieser Website schreibst. Deine Sandbox hat keinen Weg ins öffentliche Internet, und nichts von außerhalb kann hineingelangen, also nimmt keine Lektion in diesem Kurs Kontakt mit einer echten Website auf.
Jeder Live-Lauf findet stattdessen an einem Ort statt: in einem einzigen Python-Programm, auf der 127.0.0.1. Dieses Programm startet den Server und seine Clients, lässt sie miteinander reden und hält nach einer festgelegten Anzahl von Nachrichten oder nach einer Frist absichtlich an. Echte Projekte testen WebSocket-Code genauso, weil ein Test, der einen zweiten Rechner oder einen Browser braucht, langsam und anfällig ist. Wenn eine Lektion deine Arbeit prüft, gibt sie deinen
Dieses Kapitel öffnet überhaupt keine Verbindung; jede Zahl darin stammt aus einer kleinen Simulation, die du in deinem Browser ausführen kannst.
Wo nehmen die WebSocket-Server, die du in diesem Kurs schreibst, Verbindungen an?
Was du mitbringst
Du brauchst HTTP with Python und damit auch Networks with Python. Die Lektionen erwarten, dass du:
eine HTTP-Anfrage und eine HTTP-Antwort als Bytes schreiben und einen Kopf mit
splitzerlegen kannst;von einem
in einen Empfangspuffer lesen kannst, mit read_exactfür eine bekannte Anzahl von Bytes und mitread_headfür alles bis zur Leerzeile;ganze Zahlen mit
structinpacken und entpacken kannst; einen Server auf
127.0.0.1betreiben kannst, der absichtlich anhält, mit einem Thread pro Verbindung;Socket-Code testen kannst, indem du deinen Funktionen statt eines Netzwerks einen Fake-Socket übergibst;
base64undhashlibverwenden kannst, wie du es für Basic-Authentifizierung undgetan hast.
Python Fundamentals II wird empfohlen, ist aber keine Voraussetzung. Einige mitgelieferte Dateien enthalten class-Zeilen und Zeilen, die mit @ beginnen; die Lektionen erklären, wie du sie liest, und keine Übung verlangt, dass du so etwas selbst schreibst.
Lerne Monty kennen
Monty ist der Lernbegleiter von Python Land und steht dir neben jeder Lektion zur Verfügung. Bitte um eine weitere Erklärung, um einen Hinweis, der dir nicht die Lösung verrät, oder um Hilfe beim Lesen einer Fehlermeldung.
Wenn du angemeldet bist, enthält dein kostenloses Konto 5 Monty-Hilfen pro Tag, gemeinsam für alle Kurse. Eine gute erste Frage an dieser Stelle:
Erinnere mich in ein paar Sätzen daran, was
read_headin HTTP with Python getan hat und warum es die Bytes nach der Leerzeile behalten hat.
Kapitel 2 stützt sich auf diese Funktion.
Mit Guided erhältst du bis zu 50 Monty-Hilfen pro Tag. Fragen, Hinweise, Fehlererklärungen, zusätzliche Übungen und Code-Feedback teilen sich dasselbe Tageslimit. Der Zähler zeigt, wie viel noch übrig ist und wann das Limit erneuert wird. Jede Lektion und jeder normale erneute Übungsversuch bleibt kostenlos.
Die nächste Lektion probiert den naheliegendsten Weg aus, eine Anzeigetafel nur mit Anfragen und Antworten aktuell zu halten, und misst, was er kostet.