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,它在后台套接字回调中执行 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¶
读取刚被接受的套接字 cl 上的 HTTP 请求,并以适当的
Sec-WebSocket-Accept标头进行回复。如果客户端请求了有效的 WebSocket 升级,则返回True,否则返回False(在这种情况下,调用者通常会退回到通过send_html提供 HTML 客户端)。
- webrepl.send_html(cl) None¶
以一个极简的 HTML 文档回复 cl 上的 HTTP 请求,该文档从
static_host加载 WebREPL JavaScript 客户端,然后关闭套接字。
常量¶
- webrepl.static_host: str¶
send_html所使用的 WebREPL 静态客户端的基础 URL。默认为"https://micropython.org/webrepl/"。可通过在webrepl_cfg.py中设置BASE或直接重新赋值该模块属性来覆盖。
- webrepl.client_s¶
当前已连接的客户端套接字,如果没有附加客户端则为
None。由accept_conn设置,由stop清除。