webrepl --- เซิร์ฟเวอร์ WebREPL

โมดูลนี้เปิดเผย MicroPython WebREPL: REPL ที่ใช้ WebSocket ซึ่งช่วยให้ไคลเอ็นต์เชื่อมต่อกับพร้อมต์แบบโต้ตอบของบอร์ด (และถ่ายโอนไฟล์) ผ่านการเชื่อมต่อเครือข่าย หน้าเว็บสแตติกขนาดเล็กที่โฮสต์ที่ 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 คือ callable ที่ถูกเรียกเมื่อไคลเอ็นต์ TCP ใหม่เชื่อมต่อ ค่าเริ่มต้นคือ accept_conn ซึ่งดำเนินการ WebSocket handshake บน socket callback ในพื้นหลัง ส่ง None เพื่อเรียกใช้เซิร์ฟเวอร์ในโหมดเบื้องหน้า (เทียบเท่ากับ start_foreground)

webrepl.start_foreground(port: int = 8266, password: str | None = None) None

wrapper ที่สะดวกสำหรับ start ที่รันลูปรับการเชื่อมต่อแบบซิงโครนัสในเบื้องหน้าจนกว่าไคลเอ็นต์จะเชื่อมต่อ

webrepl.stop() None

ปิด socket รับฟังและการเชื่อมต่อไคลเอ็นต์ที่ใช้งานอยู่ และถอด WebREPL ออกจากเทอร์มินัลที่ทำสำเนาผ่าน os.dupterm(None)

webrepl.accept_conn(listen_sock) bool

รับการเชื่อมต่อ TCP ที่รอดำเนินการบน listen_sock และดำเนินการ WebSocket handshake ให้สมบูรณ์ หากมีไคลเอ็นต์เชื่อมต่ออยู่แล้ว การเชื่อมต่อใหม่จะถูกปฏิเสธและคืนค่า False เมื่ออัปเกรดสำเร็จ WebSocket ที่ได้จะถูกห่อด้วย _webrepl._webrepl และแนบเป็นเทอร์มินัลที่ทำสำเนา

ฟังก์ชันนี้ถูกเปิดเผยเป็นหลักเพื่อให้ผู้เรียกสามารถส่งเป็นอาร์กิวเมนต์ accept_handler ให้กับ start

webrepl.server_handshake(cl) bool

อ่านคำขอ HTTP บน socket cl ที่เพิ่งรับและตอบกลับด้วยส่วนหัว Sec-WebSocket-Accept ที่เหมาะสม คืนค่า True หากไคลเอ็นต์ขอการอัปเกรด WebSocket ที่ถูกต้อง False มิฉะนั้น (ในกรณีนั้นโดยทั่วไปผู้เรียกจะกลับไปให้บริการไคลเอ็นต์ HTML ผ่าน send_html)

webrepl.send_html(cl) None

ตอบกลับคำขอ HTTP บน cl ด้วยเอกสาร HTML ขนาดเล็กที่โหลดไคลเอ็นต์ JavaScript WebREPL จาก static_host และปิด socket

ค่าคงที่

webrepl.DEBUG: int

ตั้งค่าเป็นค่าที่ไม่ใช่ศูนย์เพื่อเปิดใช้งานการติดตามแบบ verbose ของคำขอ HTTP และ WebSocket handshake บน sys.stdout ค่าเริ่มต้นคือ 0

webrepl.static_host: str

URL ฐานของไคลเอ็นต์สแตติก WebREPL ที่ใช้โดย send_html ค่าเริ่มต้นคือ "https://micropython.org/webrepl/" อาจถูกแทนที่โดยการตั้งค่า BASE ใน webrepl_cfg.py หรือโดยการกำหนดค่าแอตทริบิวต์โมดูลใหม่โดยตรง

webrepl.listen_s

socket รับฟังที่ใช้งานอยู่ในขณะนี้ หรือ None หากเซิร์ฟเวอร์หยุดทำงาน ตั้งค่าโดย start และล้างโดย stop

webrepl.client_s

socket ไคลเอ็นต์ที่เชื่อมต่ออยู่ในขณะนี้ หรือ None หากไม่มีไคลเอ็นต์เชื่อมต่อ ตั้งค่าโดย accept_conn และล้างโดย stop