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.