webrepl — servidor WebREPL

Este módulo expõe o WebREPL do MicroPython: um REPL baseado em WebSocket que permite a clientes se conectarem ao prompt interativo de uma placa (e transferirem arquivos) por meio de uma conexão de rede. Uma pequena página estática hospedada em micropython.org/webrepl atua como o cliente JavaScript.

O WebREPL escuta por padrão na porta TCP 8266 e usa os.dupterm para duplicar o REPL no fluxo do WebSocket. Apenas um cliente simultâneo é suportado; tentativas adicionais de conexão 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 listener do WebREPL.

Se password for None, a senha é carregada de webrepl_cfg.py (criado pelo webrepl_setup). Quando webrepl_cfg não pode ser importado, um aviso é exibido e o servidor não é iniciado.

port seleciona a porta TCP na qual escutar.

accept_handler é o objeto chamável invocado quando um novo cliente TCP se conecta. O padrão é accept_conn, que realiza o handshake do WebSocket em um 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

Wrapper de conveniência em torno de start que executa o loop de aceitação de forma síncrona em primeiro plano até que um cliente se conecte.

webrepl.stop() None

Fecha o socket de escuta e qualquer conexão de cliente ativa, e desanexa o WebREPL do terminal duplicado via os.dupterm(None).

webrepl.accept_conn(listen_sock) bool

Aceita uma conexão TCP pendente em listen_sock e completa o handshake do WebSocket. Se um cliente já estiver conectado, a nova conexão é rejeitada e False é retornado. Em um upgrade bem-sucedido, o WebSocket resultante é encapsulado com _webrepl._webrepl e anexado como o terminal duplicado.

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

webrepl.server_handshake(cl) bool

Lê a requisição HTTP no socket recém-aceito cl e responde com os cabeçalhos Sec-WebSocket-Accept apropriados. Retorna True se o cliente solicitou um upgrade WebSocket válido, False caso contrário (caso em que o chamador tipicamente recorre a servir o cliente HTML via send_html).

webrepl.send_html(cl) None

Responde à requisição HTTP em cl com um documento HTML mínimo que carrega o cliente JavaScript do WebREPL a partir de static_host e então fecha o socket.

Constantes

webrepl.DEBUG: int

Defina como um valor diferente de zero para habilitar o rastreamento detalhado de requisições HTTP e handshakes de WebSocket em sys.stdout. O padrão é 0.

webrepl.static_host: str

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

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 de cliente atualmente conectado, ou None se nenhum cliente estiver anexado. Definido por accept_conn e limpo por stop.