2013-06-07 10 views
13

SignalR, gerçek zamanlı bağlantılar için kullanılan aktarımlar üzerinde bir soyutlamadır. Yine de, çeşitli faktörlere bağlı olarak hangi taşıma yöntemlerinin kullanılması gerektiğine tam olarak nasıl karar verdiğini bilmek isterim. Mevcut belgeleri kullanarak araştırma yaptım ve kaynaklara baktım ve nasıl çalıştığına dair bir fikir geldi.SignalR, hangi aktarım yönteminin kullanılacağına nasıl karar veriyor?

Benim asıl sorum şu olurdu, aşağıdaki akış şeması doğru mu yoksa hiçbir şey eksik mi?

Flowchart of SignalR's assumed transport negotiating

Güncelleme: girişiniz için

teşekkürler! İşte düzeltmelerinize göre güncellenmiş bir versiyon. Ama hala bir şeyden emin değilim: IE9 + kullanılıp kullanılmadığını açık bir kontrol yoksa, IE olmasa ve SSE'yi desteklemiyorsa ForeverFrame'den LP'ye geri dönüşü ne tetikler? ilk kapalı

enter image description here

+1

Düzenlemenizi ele almak için: Başarısızlık gerektiren durumların kullanılmasını bekleriz, bağlantı düzgün şekilde başlayamaz ve bu nedenle longpolling'e geri dönecektir –

+0

Dokümanlar: http://www.asp.net/signalr/overview/getting -Başladı/tanıtım-to-signalr # nakliye – Nogwater

cevap

7

Korku diyagramdır.

Çok yakın! İşte bazı düzeltmeler var:

Configured JSONP 
Yes -> Use LP 
No -> IsCrossDomain 
     Yes -> CORS Support? 
       No -> JSONP = true 
        -> Use LP 
       Yes -> Server Supports WebSockets 
        Yes -> Client Supports WebSockets 
          Yes -> Use WebSockets 
          No -> Use LP 
        No -> Use LP 
       No -> Use LP 

Bir diğer hafif detay: ForeverFrame daima (hatta Chrome'da) SSE önce denedim ama EventSource (SSE yatan yöntemi) varsa o zaman varsa taşıma kendi içinde o kontrol eder Sonsuz çerçeve başlatılamıyor (böylece SSE'ye geri dönebilir). Bu nedenle IE9 + asla doğrudan bir kontrol değildir.

Düzeltmelerim uygulandığında, diyagramınız doğru olacaktır.

İlgili konular