webrepl — server WebREPL

Acest modul expune WebREPL-ul MicroPython: un REPL bazat pe WebSocket care permite clienților să se conecteze la promptul interactiv al unei plăci (și să transfere fișiere) printr-o conexiune de rețea. O mică pagină statică găzduită la micropython.org/webrepl acționează ca client JavaScript.

WebREPL ascultă în mod implicit pe portul TCP 8266 și utilizează os.dupterm pentru a duplica REPL-ul pe fluxul WebSocket. Este acceptat un singur client simultan; încercările suplimentare de conectare sunt respinse.

Exemplu:

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

Funcții

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

Pornește componenta de ascultare WebREPL.

Dacă password este None, parola este încărcată din webrepl_cfg.py (creat de webrepl_setup). Atunci când webrepl_cfg nu poate fi importat, se afișează un avertisment, iar serverul nu este pornit.

port selectează portul TCP pe care se ascultă.

accept_handler este obiectul apelabil invocat atunci când se conectează un nou client TCP. Valoarea implicită este accept_conn, care efectuează negocierea WebSocket într-o funcție de retroapelare (callback) a unui socket de fundal. Transmiteți None pentru a rula serverul în mod prim-plan (echivalent cu start_foreground).

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

Înveliș de conveniență în jurul start, care rulează bucla de acceptare sincron, în prim-plan, până când se conectează un client.

webrepl.stop() None

Închide socketul de ascultare și orice conexiune de client activă și detașează WebREPL de terminalul duplicat prin os.dupterm(None).

webrepl.accept_conn(listen_sock) bool

Acceptă o conexiune TCP în așteptare pe listen_sock și finalizează negocierea WebSocket. Dacă un client este deja conectat, noua conexiune este respinsă și se returnează False. La o trecere reușită la WebSocket, socketul WebSocket rezultat este învelit cu _webrepl._webrepl și atașat ca terminal duplicat.

Acesta este expus în principal pentru ca apelanții să îl poată furniza ca argument accept_handler către start.

webrepl.server_handshake(cl) bool

Citește cererea HTTP de pe socketul cl tocmai acceptat și răspunde cu anteturile Sec-WebSocket-Accept corespunzătoare. Returnează True dacă clientul a solicitat o trecere validă la WebSocket, False în caz contrar (caz în care apelantul recurge de obicei la servirea clientului HTML prin send_html).

webrepl.send_html(cl) None

Răspunde la cererea HTTP de pe cl cu un document HTML minimal care încarcă clientul JavaScript WebREPL de la static_host și apoi închide socketul.

Constante

webrepl.DEBUG: int

Setați la o valoare diferită de zero pentru a activa urmărirea detaliată a cererilor HTTP și a negocierilor WebSocket pe sys.stdout. Valoarea implicită este 0.

webrepl.static_host: str

URL-ul de bază al clientului static WebREPL utilizat de send_html. Valoarea implicită este "https://micropython.org/webrepl/". Poate fi suprascris prin setarea BASE în webrepl_cfg.py sau prin reatribuirea directă a atributului modulului.

webrepl.listen_s

Socketul de ascultare activ în prezent sau None dacă serverul este oprit. Setat de start și șters de stop.

webrepl.client_s

Socketul clientului conectat în prezent sau None dacă niciun client nu este atașat. Setat de accept_conn și șters de stop.