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