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.