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.
|