webrepl — сервер WebREPL

Этот модуль предоставляет WebREPL для MicroPython: REPL на основе WebSocket, позволяющий клиентам подключаться к интерактивному приглашению платы (и передавать файлы) через сетевое соединение. Небольшая статическая страница, размещённая по адресу micropython.org/webrepl, выступает в роли JavaScript-клиента.

По умолчанию WebREPL слушает TCP-порт 8266 и использует os.dupterm для дублирования REPL в поток WebSocket. Поддерживается только один одновременный клиент; последующие попытки подключения отклоняются.

Пример:

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

Функции

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

Запускает прослушиватель WebREPL.

Если password равно None, пароль загружается из webrepl_cfg.py (создаётся webrepl_setup). Если webrepl_cfg не удаётся импортировать, выводится предупреждение, и сервер не запускается.

port выбирает прослушиваемый TCP-порт.

accept_handler — вызываемый объект, который вызывается при подключении нового TCP-клиента. По умолчанию используется accept_conn, выполняющий рукопожатие WebSocket в фоновой функции обратного вызова сокета. Передайте None для запуска сервера в режиме переднего плана (эквивалентно start_foreground).

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

Удобная обёртка над start, синхронно выполняющая цикл приёма на переднем плане до подключения клиента.

webrepl.stop() None

Закрывает прослушивающий сокет и любое активное клиентское соединение и отсоединяет WebREPL от дублированного терминала с помощью os.dupterm(None).

webrepl.accept_conn(listen_sock) bool

Принимает ожидающее TCP-соединение на listen_sock и завершает рукопожатие WebSocket. Если клиент уже подключён, новое соединение отклоняется и возвращается False. При успешном обновлении соединения полученный WebSocket оборачивается в _webrepl._webrepl и присоединяется как дублированный терминал.

Это предоставляется главным образом для того, чтобы вызывающие стороны могли передать его в качестве аргумента accept_handler функции start.

webrepl.server_handshake(cl) bool

Читает HTTP-запрос на только что принятом сокете cl и отвечает соответствующими заголовками Sec-WebSocket-Accept. Возвращает True, если клиент запросил корректное обновление до WebSocket, и False в противном случае (тогда вызывающая сторона обычно прибегает к выдаче HTML-клиента через send_html).

webrepl.send_html(cl) None

Отвечает на HTTP-запрос на cl минимальным HTML-документом, который загружает JavaScript-клиент WebREPL с static_host, и затем закрывает сокет.

Константы

webrepl.DEBUG: int

Установите в ненулевое значение, чтобы включить подробную трассировку HTTP-запросов и рукопожатий WebSocket в sys.stdout. По умолчанию 0.

webrepl.static_host: str

Базовый URL статического клиента WebREPL, используемого send_html. По умолчанию "https://micropython.org/webrepl/". Может быть переопределён установкой BASE в webrepl_cfg.py либо прямым переприсваиванием атрибута модуля.

webrepl.listen_s

Текущий активный прослушивающий сокет либо None, если сервер остановлен. Устанавливается start и очищается stop.

webrepl.client_s

Текущий подключённый клиентский сокет либо None, если клиент не присоединён. Устанавливается accept_conn и очищается stop.