webrepl --- WebREPL 伺服器¶
此模組公開了 MicroPython WebREPL:一個基於 WebSocket 的 REPL,讓用戶端能透過網路連線連接到開發板的互動式提示字元(並傳輸檔案)。一個託管於 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,它會在背景的 socket 回呼函式中執行 WebSocket 交握。傳入None可讓伺服器以前景模式執行(等同於start_foreground)。
- webrepl.start_foreground(port: int = 8266, password: str | None = None) None¶
start的便利包裝函式,它會在前景以同步方式執行接受迴圈,直到有用戶端連線為止。
- webrepl.accept_conn(listen_sock) bool¶
在 listen_sock 上接受一個待處理的 TCP 連線並完成 WebSocket 交握。如果已有用戶端連線,則新連線會被拒絕並回傳
False。在成功升級後,產生的 WebSocket 會以_webrepl._webrepl包裝並附加為複製的終端機。公開此函式主要是讓呼叫端可以將其作為 accept_handler 引數提供給
start。
- webrepl.server_handshake(cl) bool¶
讀取剛接受之 socket cl 上的 HTTP 請求,並以適當的
Sec-WebSocket-Accept標頭回覆。如果用戶端請求了有效的 WebSocket 升級則回傳True,否則回傳False(此時呼叫端通常會退而透過send_html提供 HTML 用戶端)。
- webrepl.send_html(cl) None¶
以一份最小的 HTML 文件回覆 cl 上的 HTTP 請求,該文件會從
static_host載入 WebREPL JavaScript 用戶端,然後關閉 socket。
常數¶
- webrepl.static_host: str¶
send_html所使用之 WebREPL 靜態用戶端的基底 URL。預設為"https://micropython.org/webrepl/"。可透過在webrepl_cfg.py中設定BASE或直接重新指派此模組屬性來覆寫。
- webrepl.client_s¶
目前已連線的用戶端 socket,若無用戶端附加則為
None。由accept_conn設定並由stop清除。