webrepl — server WebREPL

Questo modulo espone la WebREPL di MicroPython: una REPL basata su WebSocket che consente ai client di connettersi al prompt interattivo di una scheda (e di trasferire file) tramite una connessione di rete. Una piccola pagina statica ospitata su micropython.org/webrepl funge da client JavaScript.

La WebREPL ascolta per impostazione predefinita sulla porta TCP 8266 e usa os.dupterm per duplicare la REPL sullo stream WebSocket. È supportato un solo client concorrente; ulteriori tentativi di connessione vengono rifiutati.

Esempio:

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

Funzioni

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

Avvia il listener della WebREPL.

Se password è None, la password viene caricata da webrepl_cfg.py (creato da webrepl_setup). Quando webrepl_cfg non può essere importato, viene stampato un avviso e il server non viene avviato.

port seleziona la porta TCP su cui ascoltare.

accept_handler è il callable invocato quando un nuovo client TCP si connette. L’impostazione predefinita è accept_conn, che esegue l’handshake WebSocket in un callback su socket in background. Passa None per eseguire il server in modalità foreground (equivalente a start_foreground).

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

Wrapper di comodo attorno a start che esegue il loop di accettazione in modo sincrono in foreground finché un client non si connette.

webrepl.stop() None

Chiude il socket in ascolto e qualsiasi connessione client attiva, e scollega la WebREPL dal terminale duplicato tramite os.dupterm(None).

webrepl.accept_conn(listen_sock) bool

Accetta una connessione TCP in attesa su listen_sock e completa l’handshake WebSocket. Se un client è già connesso, la nuova connessione viene rifiutata e viene restituito False. In caso di upgrade riuscito, il WebSocket risultante viene incapsulato con _webrepl._webrepl e collegato come terminale duplicato.

Questo è esposto principalmente affinché i chiamanti possano fornirlo come argomento accept_handler a start.

webrepl.server_handshake(cl) bool

Legge la richiesta HTTP sul socket appena accettato cl e risponde con le opportune intestazioni Sec-WebSocket-Accept. Restituisce True se il client ha richiesto un upgrade WebSocket valido, False altrimenti (nel qual caso il chiamante in genere ricade sul servire il client HTML tramite send_html).

webrepl.send_html(cl) None

Risponde alla richiesta HTTP su cl con un documento HTML minimale che carica il client JavaScript della WebREPL da static_host e poi chiude il socket.

Costanti

webrepl.DEBUG: int

Impostare a un valore diverso da zero per abilitare il tracciamento dettagliato delle richieste HTTP e degli handshake WebSocket su sys.stdout. Il valore predefinito è 0.

webrepl.static_host: str

URL di base del client statico della WebREPL usato da send_html. Il valore predefinito è "https://micropython.org/webrepl/". Può essere sovrascritto impostando BASE in webrepl_cfg.py oppure riassegnando direttamente l’attributo del modulo.

webrepl.listen_s

Il socket in ascolto attualmente attivo, oppure None se il server è fermo. Impostato da start e azzerato da stop.

webrepl.client_s

Il socket del client attualmente connesso, oppure None se nessun client è collegato. Impostato da accept_conn e azzerato da stop.