webrepl — servidor WebREPL

Este módulo expone el WebREPL de MicroPython: un REPL basado en WebSocket que permite a los clientes conectarse al prompt interactivo de una placa (y transferir archivos) a través de una conexión de red. Una pequeña página estática alojada en micropython.org/webrepl actúa como cliente JavaScript.

El WebREPL escucha por defecto en el puerto TCP 8266 y utiliza os.dupterm para duplicar el REPL en el flujo WebSocket. Solo se admite un cliente simultáneo; los demás intentos de conexión se rechazan.

Ejemplo:

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

Funciones

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

Inicia el escuchador del WebREPL.

Si password es None, la contraseña se carga desde webrepl_cfg.py (creado por webrepl_setup). Cuando webrepl_cfg no se puede importar, se imprime una advertencia y el servidor no se inicia.

port selecciona el puerto TCP en el que escuchar.

accept_handler es el invocable que se llama cuando se conecta un nuevo cliente TCP. El valor predeterminado es accept_conn, que realiza el handshake de WebSocket en una función de retorno (callback) de socket en segundo plano. Pasa None para ejecutar el servidor en modo de primer plano (equivalente a start_foreground).

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

Envoltorio de conveniencia alrededor de start que ejecuta el bucle de aceptación de forma síncrona en primer plano hasta que se conecta un cliente.

webrepl.stop() None

Cierra el socket de escucha y cualquier conexión de cliente activa, y desvincula el WebREPL del terminal duplicado mediante os.dupterm(None).

webrepl.accept_conn(listen_sock) bool

Acepta una conexión TCP pendiente en listen_sock y completa el handshake de WebSocket. Si ya hay un cliente conectado, la nueva conexión se rechaza y se devuelve False. Si la actualización tiene éxito, el WebSocket resultante se envuelve con _webrepl._webrepl y se vincula como terminal duplicado.

Esto se expone principalmente para que quienes llaman puedan proporcionarlo como argumento accept_handler de start.

webrepl.server_handshake(cl) bool

Lee la solicitud HTTP en el socket recién aceptado cl y responde con las cabeceras Sec-WebSocket-Accept apropiadas. Devuelve True si el cliente solicitó una actualización a WebSocket válida, y False en caso contrario (en cuyo caso quien hace la llamada normalmente recurre a servir el cliente HTML mediante send_html).

webrepl.send_html(cl) None

Responde a la solicitud HTTP en cl con un documento HTML mínimo que carga el cliente JavaScript del WebREPL desde static_host y luego cierra el socket.

Constantes

webrepl.DEBUG: int

Asígnale un valor distinto de cero para habilitar el rastreo detallado de las solicitudes HTTP y los handshakes de WebSocket en sys.stdout. El valor predeterminado es 0.

webrepl.static_host: str

URL base del cliente estático del WebREPL utilizado por send_html. El valor predeterminado es "https://micropython.org/webrepl/". Puede sobrescribirse asignando BASE en webrepl_cfg.py o reasignando directamente el atributo del módulo.

webrepl.listen_s

El socket de escucha actualmente activo, o None si el servidor está detenido. Lo asigna start y lo borra stop.

webrepl.client_s

El socket de cliente actualmente conectado, o None si no hay ningún cliente vinculado. Lo asigna accept_conn y lo borra stop.