webrepl — WebREPL-Server

Dieses Modul stellt die MicroPython-WebREPL bereit: eine WebSocket-basierte REPL, mit der sich Clients über eine Netzwerkverbindung mit der interaktiven Eingabeaufforderung eines Boards verbinden (und Dateien übertragen) können. Eine kleine statische Seite unter micropython.org/webrepl fungiert als JavaScript-Client.

Die WebREPL lauscht standardmäßig auf TCP-Port 8266 und verwendet os.dupterm, um die REPL auf den WebSocket-Stream zu duplizieren. Es wird nur ein gleichzeitiger Client unterstützt; weitere Verbindungsversuche werden abgewiesen.

Beispiel:

import webrepl
webrepl.start(password="changeme")
# ... or load the password from webrepl_cfg.py:
# webrepl.start()

Funktionen

webrepl.start(port: int = 8266, password: str | None = None, accept_handler=accept_conn) None

Startet den WebREPL-Listener.

Ist password gleich None, wird das Passwort aus webrepl_cfg.py geladen (erstellt durch webrepl_setup). Kann webrepl_cfg nicht importiert werden, wird eine Warnung ausgegeben und der Server nicht gestartet.

port wählt den TCP-Port aus, auf dem gelauscht werden soll.

accept_handler ist die aufrufbare Funktion, die aufgerufen wird, wenn sich ein neuer TCP-Client verbindet. Der Standardwert ist accept_conn, das den WebSocket-Handshake in einem Hintergrund-Socket-Callback durchführt. Übergeben Sie None, um den Server im Vordergrundmodus auszuführen (entspricht start_foreground).

webrepl.start_foreground(port: int = 8266, password: str | None = None) None

Bequeme Hülle um start, die die Accept-Schleife synchron im Vordergrund ausführt, bis sich ein Client verbindet.

webrepl.stop() None

Schließt den lauschenden Socket sowie alle aktiven Client-Verbindungen und trennt die WebREPL über os.dupterm(None) vom duplizierten Terminal.

webrepl.accept_conn(listen_sock) bool

Nimmt eine ausstehende TCP-Verbindung auf listen_sock an und schließt den WebSocket-Handshake ab. Ist bereits ein Client verbunden, wird die neue Verbindung abgewiesen und False zurückgegeben. Bei einem erfolgreichen Upgrade wird der resultierende WebSocket mit _webrepl._webrepl umhüllt und als dupliziertes Terminal angehängt.

Dies wird in erster Linie bereitgestellt, damit Aufrufer es als accept_handler-Argument an start übergeben können.

webrepl.server_handshake(cl) bool

Liest die HTTP-Anfrage auf dem soeben angenommenen Socket cl und antwortet mit den passenden Sec-WebSocket-Accept-Headern. Gibt True zurück, wenn der Client ein gültiges WebSocket-Upgrade angefordert hat, andernfalls False (in welchem Fall der Aufrufer typischerweise darauf zurückfällt, den HTML-Client über send_html auszuliefern).

webrepl.send_html(cl) None

Antwortet auf die HTTP-Anfrage auf cl mit einem minimalen HTML-Dokument, das den WebREPL-JavaScript-Client von static_host lädt, und schließt anschließend den Socket.

Konstanten

webrepl.DEBUG: int

Auf einen Wert ungleich null setzen, um ausführliches Tracing von HTTP-Anfragen und WebSocket-Handshakes auf sys.stdout zu aktivieren. Standardmäßig 0.

webrepl.static_host: str

Basis-URL des statischen WebREPL-Clients, der von send_html verwendet wird. Standardmäßig "https://micropython.org/webrepl/". Kann durch Setzen von BASE in webrepl_cfg.py oder durch direktes Neuzuweisen des Modulattributs überschrieben werden.

webrepl.listen_s

Der aktuell aktive lauschende Socket oder None, wenn der Server gestoppt ist. Wird von start gesetzt und von stop gelöscht.

webrepl.client_s

Der aktuell verbundene Client-Socket oder None, wenn kein Client angehängt ist. Wird von accept_conn gesetzt und von stop gelöscht.