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 リスナーを開始します。
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¶
クライアントが接続するまで accept ループをフォアグラウンドで同期的に実行する、
startの便利なラッパーです。
- webrepl.accept_conn(listen_sock) bool¶
listen_sock 上で保留中の TCP 接続を受け入れ、WebSocket ハンドシェイクを完了します。すでにクライアントが接続されている場合、新しい接続は拒否され
Falseが返されます。アップグレードに成功すると、得られた WebSocket が_webrepl._webreplでラップされ、複製された端末としてアタッチされます。これは主に、呼び出し側が
startの accept_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.pyでBASEを設定するか、モジュール属性を直接再代入することで上書きできます。
- webrepl.client_s¶
現在接続されているクライアントソケット、またはクライアントがアタッチされていない場合は
Noneです。accept_connによって設定され、stopによってクリアされます。