webrepl — servidor WebREPL

Este módulo expõe o WebREPL do MicroPython: um REPL baseado em WebSocket que permite aos clientes ligar-se ao prompt interativo de uma placa (e transferir ficheiros) através de uma ligação de rede. Uma pequena página estática alojada em micropython.org/webrepl funciona como cliente JavaScript.

O WebREPL escuta na porta TCP 8266 por padrão e usa os.dupterm para duplicar o REPL no fluxo WebSocket. Apenas um cliente simultâneo é suportado; as tentativas de ligação adicionais são rejeitadas.

Exemplo:

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

Funções

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

Inicia o ouvinte WebREPL.

Se password for None, a palavra-passe é carregada a partir de webrepl_cfg.py (criado por webrepl_setup). Quando webrepl_cfg não pode ser importado, é impressa uma advertência e o servidor não é iniciado.

port seleciona a porta TCP em que escutar.

accept_handler é o chamável invocado quando um novo cliente TCP se liga. O padrão é accept_conn, que executa o handshake WebSocket numa callback de socket em segundo plano. Passe None para executar o servidor em modo de primeiro plano (equivalente a start_foreground).

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

Invólucro de conveniência em torno de start que executa o ciclo de aceitação de forma síncrona em primeiro plano até que um cliente se ligue.

webrepl.stop() None

Fecha o socket de escuta e qualquer ligação de cliente ativa, e desliga o WebREPL do terminal duplicado através de os.dupterm(None).

webrepl.accept_conn(listen_sock) bool

Aceita uma ligação TCP pendente em listen_sock e conclui o handshake WebSocket. Se um cliente já estiver ligado, a nova ligação é rejeitada e False é devolvido. Após uma atualização bem-sucedida, o WebSocket resultante é envolvido com _webrepl._webrepl e anexado como terminal duplicado.

Isto é exposto principalmente para que os chamadores possam fornecê-lo como argumento accept_handler para start.

webrepl.server_handshake(cl) bool

Lê o pedido HTTP no socket recentemente aceite cl e responde com os cabeçalhos Sec-WebSocket-Accept apropriados. Devolve True se o cliente pediu uma atualização WebSocket válida, False caso contrário (situação em que o chamador tipicamente recorre ao serviço do cliente HTML via send_html).

webrepl.send_html(cl) None

Responde ao pedido HTTP em cl com um documento HTML mínimo que carrega o cliente JavaScript WebREPL a partir de static_host e depois fecha o socket.

Constantes

webrepl.DEBUG: int

Definido como um valor diferente de zero para ativar o rastreio detalhado de pedidos HTTP e handshakes WebSocket em sys.stdout. O valor predefinido é 0.

webrepl.static_host: str

URL base do cliente estático WebREPL usado por send_html. O valor predefinido é "https://micropython.org/webrepl/". Pode ser substituído definindo BASE em webrepl_cfg.py ou reatribuindo o atributo do módulo diretamente.

webrepl.listen_s

O socket de escuta atualmente ativo, ou None se o servidor estiver parado. Definido por start e limpo por stop.

webrepl.client_s

O socket do cliente atualmente ligado, ou None se nenhum cliente estiver anexado. Definido por accept_conn e limpo por stop.