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.