webrepl — сервер WebREPL

Цей модуль надає доступ до MicroPython WebREPL: 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.