webrepl --- خادم WebREPL¶
تكشف هذه الوحدة عن WebREPL الخاص بـ MicroPython: وهو 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 هو الكائن القابل للاستدعاء الذي يُستدعى عند اتصال عميل TCP جديد. والقيمة الافتراضية هي
accept_conn، التي تنفّذ مصافحة WebSocket في دالة رد نداء على المقبس في الخلفية. مرّرNoneلتشغيل الخادم في وضع المقدمة (وهو ما يكافئstart_foreground).
- webrepl.start_foreground(port: int = 8266, password: str | None = None) None¶
غلاف ملائم حول
startيشغّل حلقة القبول بشكل متزامن في المقدمة حتى يتصل عميل.
- webrepl.stop() None¶
إغلاق المقبس المستمع وأي اتصال عميل نشط، وفصل WebREPL عن الطرفية المكررة عبر
os.dupterm(None).
- webrepl.accept_conn(listen_sock) bool¶
قبول اتصال TCP معلّق على listen_sock وإكمال مصافحة WebSocket. إذا كان عميل متصلًا بالفعل فيُرفض الاتصال الجديد ويُعاد
False. وعند نجاح الترقية، يُغلَّف WebSocket الناتج بـ_webrepl._webreplويُربط كطرفية مكررة.يُكشف عن هذا بشكل أساسي ليتمكن المُستدعون من تمريره كوسيط accept_handler إلى
start.
- webrepl.server_handshake(cl) bool¶
قراءة طلب HTTP على المقبس cl المقبول حديثًا والرد بترويسات
Sec-WebSocket-Acceptالمناسبة. يُعيدTrueإذا طلب العميل ترقية WebSocket صالحة، وFalseخلاف ذلك (وفي هذه الحالة يلجأ المُستدعي عادةً إلى تقديم عميل HTML عبرsend_html).
- webrepl.send_html(cl) None¶
الرد على طلب HTTP على cl بمستند HTML بسيط يحمّل عميل WebREPL JavaScript من
static_hostثم يغلق المقبس.
الثوابت¶
- webrepl.DEBUG: int¶
اضبطه على قيمة غير صفرية لتمكين التتبع المفصّل لطلبات HTTP ومصافحات WebSocket على
sys.stdout. القيمة الافتراضية هي0.
- webrepl.static_host: str¶
عنوان URL الأساسي لعميل WebREPL الثابت المستخدم بواسطة
send_html. القيمة الافتراضية هي"https://micropython.org/webrepl/". ويمكن تجاوزها بضبطBASEفيwebrepl_cfg.pyأو بإعادة تعيين سمة الوحدة مباشرةً.
- webrepl.listen_s¶
المقبس المستمع النشط حاليًا، أو
Noneإذا كان الخادم متوقفًا. يُضبط بواسطةstartويُمحى بواسطةstop.
- webrepl.client_s¶
مقبس العميل المتصل حاليًا، أو
Noneإذا لم يكن هناك عميل مربوط. يُضبط بواسطةaccept_connويُمحى بواسطةstop.