Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 30231|Yanıt: 1

[Kaynak] SignalR, iletişim için websocket protokolünü kullanmaz

[Bağlantıyı kopyala]
Yayınlandı 18.04.2019 17:33:48 | | | |
ASP.NET SignalR, uygulamalarına gerçek zamanlı web işlevselliği ekleme sürecini basitleştiren ASP.NET geliştiriciler için bir kütüphanedir. Gerçek zamanlı web özelliği, sunucu kodunun içeriği erişilebilir olduğu anda bağlantılı bir istemciye gönderebildiği bir özelliktir; sunucunun istemcinin yeni veri talep etmesini bekletmek yerine.

ASP .NET SignalR, ASP .NET altında bir sınıf kütüphanesidir ve ASP .NET web projelerinde gerçek zamanlı iletişim gerçekleştirebilir (yani, istemci (web sayfası) ve sunucu tarafı birbirlerini gerçek zamanlı ve çağrı yöntemleriyle bilgilendirebilir), SignalR'ın üç iletim modu vardır: LongLooping (uzun anket), WebSocket (HTML5 WEB soketi), Forever Frame ( çerçeveyi gizleyen uzun istek bağlantıları), WEB istemcisinde açıkça belirtilebilir veya varsayılan olarak (önerilir) eğer varsayılan kabul edilirse,SignalR, tarayıcının ortamına göre uygun iletim yöntemini otomatik olarak seçer

Web sitesi veri yüklenmesi çok yavaş olduğundan, veri paketinin çok büyük olması, ağ talebinin uygun olması, "ws"nin boş olduğu ve ardından SignalR'nin websocket protokolünü kullanmadığı ortaya çıkmasıdır.

Yerel olarak hata ayıkladığımda, web sitesinin WS protokolünü normal şekilde kullanabildiğini, yani websocket'lerle normal iletişim kurabildiğini ve ardından sunucu ile yerel ağ talepleri arasındaki farkı gözlemlediğini gördüm ve bunun şu olduğunu gördüm:



URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclehub%22%7D%5D&_=1555578162378

Yerel:

{"Url":"/signalr","ConnectionToken":"iX0gmz3XDJpQ62b6eiWK16Quaf+LFlD5aHw1k2oC6dKPz7naDuFmc0M7+xiR72ZjJDuNnMvfZyZF72qJK/4g6FOKAsY5C0uCfViOBXPRJVMBczOXTyCKcztIcugmcBq8" ,"ConnectionId":"50598ad3-b138-458c-a58d-b4f84d23c0e0","KeepAliveTimeout":20.0,"DisconnectTimeout":30.0,"ConnectionTimeout":110.0,"TryWebSockets":true," ProtocolVersion":"1.5","TransportConnectTimeout":5.0,"LongPollDelay":0.0}
Sunucular:

{"Url":"/signalr","ConnectionToken":"4JbNUOp5/ju8Fljn29tCsFoTitZXk3XfF3tkuc/OYpaEQPawJHi3U1nTtjcJJzK4mVsOn9nAEECZj7h5732aV7tNJDgsasCon9uQwhqXZC5EAZPrAgASueApAjBCpPpE" ,"ConnectionId":"c46e67b1-4fb4-4345-983f-bf2c391d33e0","KeepAliveTimeout":20.0,"DisconnectTimeout":30.0,"ConnectionTimeout":110.0,"TryWebSockets":false," ProtocolVersion":"1.5","TransportConnectTimeout":5.0,"LongPollDelay":0.0}
Bazı parametreler orijinal olarak yerel ve sunucu parametrelerinden farklıdır ve ben buldumTryWebSocketsparametre, yerel doğru, sunucu yanlış.



Bilgilere bakıldığında, SignalR'in WebSocket protokolünü kullanıyorsa aşağıdaki koşulların karşılanması gerektiği tespit edilmiştir:

  • ASP.NET 4.5
  • IIS 8.0 (Windows Server 2012 veya Windows 8)
  • WebSockets özelliği sunucuda etkinleştirilmiş durumda
  • Tarayıcı WebSocket'leri için destek



Bu, sunucudaki IIS sürümünün 7.5 olduğunu gördüm,WebSocket protokolü IIS 7.5'te desteklenmemektedir



Referans bağlantıları:Bağlantı girişi görünür.




Önceki:WPF Programcı Dinlenme Dijital Saati [kaynak koduyla]
Önümüzdeki:"Çılgın Programcı"
Yayınlandı 22.04.2019 09:24:01 |
İyi şeyler Mark
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com