webrepl — WebREPL sunucusu

Bu modül MicroPython WebREPL’i açığa çıkarır: istemcilerin bir kartın etkileşimli istemine bağlanmasına (ve dosya aktarmasına) bir ağ bağlantısı üzerinden olanak tanıyan, WebSocket tabanlı bir REPL. micropython.org/webrepl adresinde barındırılan küçük bir statik sayfa JavaScript istemcisi olarak işlev görür.

WebREPL varsayılan olarak TCP portu 8266’da dinler ve REPL’i WebSocket akışına kopyalamak için os.dupterm kullanır. Yalnızca tek bir eşzamanlı istemci desteklenir; sonraki bağlantı girişimleri reddedilir.

Örnek:

import webrepl
webrepl.start(password="changeme")
# ... or load the password from webrepl_cfg.py:
# webrepl.start()

İşlevler

webrepl.start(port: int = 8266, password: str | None = None, accept_handler=accept_conn) None

WebREPL dinleyicisini başlatır.

password None ise, parola webrepl_cfg.py‘den (webrepl_setup tarafından oluşturulur) yüklenir. webrepl_cfg içe aktarılamadığında bir uyarı yazdırılır ve sunucu başlatılmaz.

port, dinlenecek TCP portunu seçer.

accept_handler, yeni bir TCP istemcisi bağlandığında çağrılan çağrılabilir nesnedir. Varsayılan, WebSocket el sıkışmasını bir arka plan soket geri çağırmasında (callback) gerçekleştiren accept_conn‘dur. Sunucuyu ön plan modunda çalıştırmak için None geçirin (start_foreground ile eşdeğer).

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

Bir istemci bağlanana kadar kabul döngüsünü ön planda eşzamanlı olarak çalıştıran, start etrafında kullanışlı bir sarmalayıcı.

webrepl.stop() None

Dinleyen soketi ve etkin tüm istemci bağlantılarını kapatır ve WebREPL’i os.dupterm(None) aracılığıyla kopyalanan terminalden ayırır.

webrepl.accept_conn(listen_sock) bool

listen_sock üzerinde bekleyen bir TCP bağlantısını kabul eder ve WebSocket el sıkışmasını tamamlar. Bir istemci zaten bağlıysa yeni bağlantı reddedilir ve False döndürülür. Başarılı bir yükseltmede, elde edilen WebSocket _webrepl._webrepl ile sarmalanır ve kopyalanan terminal olarak eklenir.

Bu, öncelikle çağıranların onu start‘a accept_handler bağımsız değişkeni olarak verebilmesi için açığa çıkarılmıştır.

webrepl.server_handshake(cl) bool

Yeni kabul edilen soket cl üzerindeki HTTP isteğini okur ve uygun Sec-WebSocket-Accept başlıklarıyla yanıt verir. İstemci geçerli bir WebSocket yükseltmesi istediyse True, aksi takdirde False döndürür (bu durumda çağıran genellikle send_html aracılığıyla HTML istemcisini sunmaya geri döner).

webrepl.send_html(cl) None

cl üzerindeki HTTP isteğine, WebREPL JavaScript istemcisini static_host‘tan yükleyen minimal bir HTML belgesiyle yanıt verir ve ardından soketi kapatır.

Sabitler

webrepl.DEBUG: int

sys.stdout üzerinde HTTP isteklerinin ve WebSocket el sıkışmalarının ayrıntılı izlemesini etkinleştirmek için sıfır olmayan bir değere ayarlayın. Varsayılan değer 0‘dır.

webrepl.static_host: str

send_html tarafından kullanılan WebREPL statik istemcisinin temel URL’si. Varsayılan değer "https://micropython.org/webrepl/"‘dir. webrepl_cfg.py içinde BASE ayarlanarak ya da modül özniteliği doğrudan yeniden atanarak geçersiz kılınabilir.

webrepl.listen_s

Şu anda etkin olan dinleme soketi ya da sunucu durdurulmuşsa None. start tarafından ayarlanır ve stop tarafından temizlenir.

webrepl.client_s

Şu anda bağlı olan istemci soketi ya da hiçbir istemci ekli değilse None. accept_conn tarafından ayarlanır ve stop tarafından temizlenir.