lilydocs
HTTP APIWebSocketConsumer
Temeller2 dk okuma

Uygulama yaşam döngüsü

Build, start ve close adımlarını; Lily’nin yönettiği kaynaklarla dışarıdan verilen kaynakların sahipliğini öğrenin.

WsAppBuilder uygulamanın politikasını ve bileşenlerini tanımlar. WsApp bunların çalışma ve kapanış sahipliğini üstlenir. Listener, bağlantılar ve DI scope'ları bu yaşam döngüsüne bağlıdır.

Build listener açmaz#

build().await, config snapshot'ını okur, DI container'ı ve controller'ları oluşturur, kayıtlı worker'ların new adımını çalıştırır, route ve politika planlarını doğrular. Başarıyla döndüğünde henüz bir listener açmış değildir. Aynı effective planda tekrarlanan middleware, guard veya codec gibi hatalar istemci kabulünden önce bulunur.

Başlangıç ve kapanış
Builder → build → hazır WsApp → start → bağlantı ve mesaj kabulü
                       ↓                     ↓
                     close       sinyal / caller token / close / hata
                       └─────────── cleanup ve tamamlanma sonucu

Başarısız veya iptal edilmiş build'de framework oluşturduğu kaynakların rollback sahipliğini tutar. Kullanıcı tarafından başlatılmış bağımsız task'lar bu kapsama kendiliğinden girmez.

Start bir kez çağrılır#

start().await listener'ı açar ve uygulama kapanana kadar bekler. Kayıtlı worker'lar listener bind ve varsa Required backplane subscription hazır olduktan sonra çalışır; readiness ilk iş sonucunu beklemez. start_with_cancellation(token) test veya üst uygulamanın kapanış sinyalini bağlamak içindir. Platform sinyalleri bu modda da etkindir.

Bir WsApp yeniden başlatılmaz. start çağrısı yapılmış ya da close edilmiş uygulama için yeni çalışma döngüsü gerekiyorsa yeni bir app kurun. WsApp public Clone sağlamaz; yönetim task'ları arasında erişim gerekiyorsa Arc<WsApp> kullanın.

Close sonucunu bekleyin#

close().await, hiç başlatılmamış app'i de kapatır. Eşzamanlı ve tekrarlı çağrılar saklanan aynı kapanış sonucunu gözler; tekrar çağırmak yeni süre bütçesi yaratmaz. start bekleyen future'ın düşmesi kapanışı tetikler; cleanup owner'ı bu waiter ile birlikte kaybolmaz.

Başarılı close, gereken tamamlanma kanıtlarının toplandığını ifade eder. Hata dönerse kaynağın hâlâ kullanılıyor olabileceğini hesaba katın. Task'a abort istemek ile task'ın sona erdiğini doğrulamak aynı şey değildir. Ayrıntılı sıra shutdown sayfasındadır.

Dış container ve tracing#

.container(Arc<ApplicationContainer>) ile verdiğiniz container'ın bütünü size aittir. Lily açtığı scope'ları kapatır; dış container'ı otomatik kapatmaz. Önce app kapanışını başarıyla bekleyin, sonra container'ın dış sahibini kapatın. App kapanışı hata verdiğinde container'ı koşulsuz kapatmayın.

.tracing_external() aynı sahiplik ayrımını telemetry için kurar. add_background_service::<T>() ile kaydedilen arka plan servislerini Lily başlatır, iptal eder ve kapanışta bekler. tokio::spawn ile açılan uygulama işlerini kendiniz durdurmalı ve beklemelisiniz. Dış container ve WSS kurulumunun tam örneği, transport sayfasında açıklanır.

Bu sayfanın kaynakları v0.1.0

Anlatım, incelenen framework commit’ine dayanır.

HIZLI BAŞLANGIÇ
Dokümantasyon
Kaynak kod