Blazor

Canlı Blazor oyununda sunucu zamanı yönetmeli: SignalR ve arka plan servisi dersleri

Bir geliştirici, .NET 10 üzerinde Blazor Web App ve MAUI Blazor Hybrid ile çalışan canlı bingo oyununu nasıl kurguladığını anlatıyor. Oyun yaşam döngüsünün sunucuda tutulması, zamanlayıcı tabanlı başlatma, idempotent katılım ve InteractiveAuto yeniden başlatmaları ele alınıyor. Gerçek zamanlı Blazor uygulaması geliştiren herkes için pratik dersler içeriyor.

DEV Community: #blazor Don Gerard
Yayın tarihi
Okuma süresi
6 dk okuma
agent çalıştırması #17
agent çalıştırması #17
Orijinale git dev.to

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Oyun yaşam döngüsü tek bir enum ile sunucuda türetilir ve SignalR ile istemcilere itilir; istemciler yalnızca ilk yüklemede yerel hesap yapar.
  • Başlangıç zamanını bildiren BackgroundService, PeriodicTimer ile 15 saniyede bir çalışır ve yalnızca bağlı oturumları sorgular.
  • Oyun bitişi, yayın öncesi IsEnded = true yapılarak veritabanında tek seferlik işaretlenir.
  • Katılım, idempotent bir POST /api/bingo/joingame isteğiyle yapılır; yükleme sırasında GET state değiştirmez.
  • InteractiveAuto bileşenleri iki kez başlayabilir; sunucu durumu her seferinde yeniden çekilmeli, JS interop kurulumu yeniden çalıştırılabilir olmalı.

Yazar, toplantılar ve sunumlar için canlı bir bingo oyunu geliştirmiş. Oyun, tek bir Razor Class Library üzerinden hem Blazor Web App sitesine hem de iPhone, Android ve Windows için MAUI Blazor Hybrid uygulamasına servis ediyor; tüm canlı iletişim SignalR ile yürüyor. Yazının ana fikri, oyun durumunun saatinin ve kurallarının sunucuda tutulması gerektiği.

Yazar, oyun aşamasını tek bir enum ile sunucuda türetip istemcilere iterek iki telefonun farklı durumları göstermesini engelliyor. Başlangıç saatini takip eden bir BackgroundService, 15 saniyelik bir PeriodicTimer ile çalışıyor; oyun bitişi veritabanında IsEnded bayrağıyla tek seferlik işaretleniyor. Katılım ayrı bir POST isteğiyle idempotent yapılıyor, iki sekme arasında ise en yeni oturum geçerli sayılıyor. InteractiveAuto bileşenlerinin iki kez başlatılabileceği de hatırlatılıyor.

Gerçek dünyada kullanımı

  • Birden fazla telefondan aynı anda güncellenen canlı bir quiz, anket veya oylama uygulaması.
  • Başlangıç saati olan etkinlikleri, zamanlayıcıyla sunucu tarafında duyuran Blazor Web App projeleri.
  • Hem web hem MAUI Blazor Hybrid istemcisi paylaşan, tek Razor Class Library kullanan ürünler.

Neden önemli

Gerçek zamanlı bir Blazor uygulamasında durumun sahibi sunucu olmalı; istemci tarafı önbelleği ve yeniden başlayan bileşenler yanlış durum ve çift olay üretebilir. Yazının önerdiği desenler, SignalR tabanlı her uygulamada doğrudan uygulanabilir.

Bu özet, DEV Community: #blazor üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü