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.