webrepl --- WebREPL サーバー

このモジュールは MicroPython の WebREPL を公開します。これは WebSocket ベースの REPL で、クライアントがネットワーク接続を介してボードの対話型プロンプトに接続したり(ファイルを転送したり)できるようにします。micropython.org/webrepl でホストされている小さな静的ページが JavaScript クライアントとして機能します。

WebREPL は既定で TCP ポート 8266 で待ち受け、os.dupterm を使用して REPL を WebSocket ストリームに複製します。同時にサポートされるクライアントは 1 つのみで、それ以上の接続試行は拒否されます。

例:

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 リスナーを開始します。

passwordNone の場合、パスワードは webrepl_cfg.pywebrepl_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

クライアントが接続するまで accept ループをフォアグラウンドで同期的に実行する、start の便利なラッパーです。

webrepl.stop() None

待ち受けソケットとアクティブなクライアント接続をすべて閉じ、os.dupterm(None) を介して WebREPL を複製された端末から切り離します。

webrepl.accept_conn(listen_sock) bool

listen_sock 上で保留中の TCP 接続を受け入れ、WebSocket ハンドシェイクを完了します。すでにクライアントが接続されている場合、新しい接続は拒否され False が返されます。アップグレードに成功すると、得られた WebSocket が _webrepl._webrepl でラップされ、複製された端末としてアタッチされます。

これは主に、呼び出し側が startaccept_handler 引数として渡せるように公開されています。

webrepl.server_handshake(cl) bool

新たに受け入れたソケット cl 上の HTTP リクエストを読み取り、適切な Sec-WebSocket-Accept ヘッダで応答します。クライアントが有効な WebSocket アップグレードを要求した場合は True を、そうでない場合は False を返します(後者の場合、呼び出し側は通常 send_html を介して HTML クライアントを提供する処理にフォールバックします)。

webrepl.send_html(cl) None

cl 上の HTTP リクエストに対して、static_host から WebREPL JavaScript クライアントを読み込む最小限の HTML ドキュメントで応答し、その後ソケットを閉じます。

定数

webrepl.DEBUG: int

非ゼロの値に設定すると、sys.stdout 上に HTTP リクエストと WebSocket ハンドシェイクの詳細なトレースが有効になります。既定値は 0 です。

webrepl.static_host: str

send_html が使用する WebREPL 静的クライアントのベース URL です。既定値は "https://micropython.org/webrepl/" です。webrepl_cfg.pyBASE を設定するか、モジュール属性を直接再代入することで上書きできます。

webrepl.listen_s

現在アクティブな待ち受けソケット、またはサーバーが停止している場合は None です。start によって設定され、stop によってクリアされます。

webrepl.client_s

現在接続されているクライアントソケット、またはクライアントがアタッチされていない場合は None です。accept_conn によって設定され、stop によってクリアされます。