webrepl — WebREPL 서버

이 모듈은 MicroPython WebREPL을 노출합니다. 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 수신기를 시작합니다.

passwordNone 이면 비밀번호는 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.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이 아닌 값으로 설정합니다. 기본값은 0 입니다.

webrepl.static_host: str

send_html 이 사용하는 WebREPL 정적 클라이언트의 기본 URL입니다. 기본값은 "https://micropython.org/webrepl/" 입니다. webrepl_cfg.py 에서 BASE 를 설정하거나 모듈 속성을 직접 재할당하여 재정의할 수 있습니다.

webrepl.listen_s

현재 활성화된 수신 대기 소켓이며, 서버가 중지된 경우 None 입니다. start 에 의해 설정되고 stop 에 의해 해제됩니다.

webrepl.client_s

현재 연결된 클라이언트 소켓이며, 연결된 클라이언트가 없으면 None 입니다. accept_conn 에 의해 설정되고 stop 에 의해 해제됩니다.