webrepl — serveur WebREPL

Ce module expose le WebREPL de MicroPython : un REPL basé sur WebSocket qui permet aux clients de se connecter à l’invite interactive d’une carte (et de transférer des fichiers) via une connexion réseau. Une petite page statique hébergée sur micropython.org/webrepl fait office de client JavaScript.

Le WebREPL écoute par défaut sur le port TCP 8266 et utilise os.dupterm pour dupliquer le REPL sur le flux WebSocket. Un seul client simultané est pris en charge ; les tentatives de connexion supplémentaires sont rejetées.

Exemple

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

Fonctions

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

Démarre l’écouteur WebREPL.

Si password vaut None, le mot de passe est chargé depuis webrepl_cfg.py (créé par webrepl_setup). Lorsque webrepl_cfg ne peut pas être importé, un avertissement est affiché et le serveur n’est pas démarré.

port sélectionne le port TCP sur lequel écouter.

accept_handler est l’objet appelable invoqué lorsqu’un nouveau client TCP se connecte. La valeur par défaut est accept_conn, qui effectue la négociation WebSocket dans une fonction de rappel de socket en arrière-plan. Passez None pour exécuter le serveur en mode premier plan (équivalent à start_foreground).

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

Wrapper pratique autour de start qui exécute la boucle d’acceptation de manière synchrone au premier plan jusqu’à ce qu’un client se connecte.

webrepl.stop() None

Ferme le socket d’écoute et toute connexion client active, puis détache le WebREPL du terminal dupliqué via os.dupterm(None).

webrepl.accept_conn(listen_sock) bool

Accepte une connexion TCP en attente sur listen_sock et complète la négociation WebSocket. Si un client est déjà connecté, la nouvelle connexion est rejetée et False est renvoyé. En cas de mise à niveau réussie, le WebSocket résultant est enveloppé avec _webrepl._webrepl et attaché en tant que terminal dupliqué.

Ceci est exposé principalement pour que les appelants puissent le fournir comme argument accept_handler à start.

webrepl.server_handshake(cl) bool

Lit la requête HTTP sur le socket cl fraîchement accepté et répond avec les en-têtes Sec-WebSocket-Accept appropriés. Renvoie True si le client a demandé une mise à niveau WebSocket valide, False sinon (auquel cas l’appelant se rabat généralement sur la fourniture du client HTML via send_html).

webrepl.send_html(cl) None

Répond à la requête HTTP sur cl avec un document HTML minimal qui charge le client JavaScript WebREPL depuis static_host, puis ferme le socket.

Constantes

webrepl.DEBUG: int

Définir sur une valeur non nulle pour activer le traçage détaillé des requêtes HTTP et des négociations WebSocket sur sys.stdout. La valeur par défaut est 0.

webrepl.static_host: str

URL de base du client statique WebREPL utilisé par send_html. La valeur par défaut est "https://micropython.org/webrepl/". Peut être remplacée en définissant BASE dans webrepl_cfg.py ou en réaffectant directement l’attribut du module.

webrepl.listen_s

Le socket d’écoute actuellement actif, ou None si le serveur est arrêté. Défini par start et effacé par stop.

webrepl.client_s

Le socket client actuellement connecté, ou None si aucun client n’est attaché. Défini par accept_conn et effacé par stop.