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 auswebrepl_cfg.pygeladen (erstellt durchwebrepl_setup). Kannwebrepl_cfgnicht 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 SieNone, um den Server im Vordergrundmodus auszuführen (entsprichtstart_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
Falsezurückgegeben. Bei einem erfolgreichen Upgrade wird der resultierende WebSocket mit_webrepl._webreplumhü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. GibtTruezurück, wenn der Client ein gültiges WebSocket-Upgrade angefordert hat, andernfallsFalse(in welchem Fall der Aufrufer typischerweise darauf zurückfällt, den HTML-Client übersend_htmlauszuliefern).
- webrepl.send_html(cl) None¶
Antwortet auf die HTTP-Anfrage auf cl mit einem minimalen HTML-Dokument, das den WebREPL-JavaScript-Client von
static_hostlä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.stdoutzu aktivieren. Standardmäßig0.
- webrepl.static_host: str¶
Basis-URL des statischen WebREPL-Clients, der von
send_htmlverwendet wird. Standardmäßig"https://micropython.org/webrepl/". Kann durch Setzen vonBASEinwebrepl_cfg.pyoder durch direktes Neuzuweisen des Modulattributs überschrieben werden.
- webrepl.listen_s¶
Der aktuell aktive lauschende Socket oder
None, wenn der Server gestoppt ist. Wird vonstartgesetzt und vonstopgelöscht.
- webrepl.client_s¶
Der aktuell verbundene Client-Socket oder
None, wenn kein Client angehängt ist. Wird vonaccept_conngesetzt und vonstopgelöscht.