Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 30231|Svar: 1

[Källa] SignalR använder inte websocket-protokollet för att kommunicera

[Kopiera länk]
Publicerad på 2019-04-18 17:33:48 | | | |
ASP.NET SignalR är ett bibliotek för ASP.NET utvecklare som förenklar processen att lägga till realtidsfunktionalitet på webben i sina applikationer. En realtidswebfunktion är en funktion där serverkod kan skicka innehåll till en ansluten klient så snart det blir tillgängligt, istället för att servern ska vänta på att klienten ska begära ny data.

ASP .NET SignalR är ett klassbibliotek under ASP .NET, som kan genomföra realtidskommunikation i ASP .NET-webbprojekt (det vill säga att klienten (webbsidan) och serversidan kan meddela varandra i realtid och anropa metoder), SignalR har tre överföringsläge: LongLooping (lång polling), WebSocket (HTML5 WEB-socket), Forever Frame ( långa förfrågningsanslutningar som döljer ramen), kan uttryckligen specificeras i WEB-klienten eller som standard (rekommenderas), om standarden antas,SignalR väljer automatiskt lämplig överföringsmetod baserat på webbläsarens miljö

Eftersom webbplatsens dataladdning är för långsam är anledningen att datapaketet är för stort, nätverksförfrågan är lämplig, och det visar sig att "ws" är tomt, och sedan visar det sig att SignalR inte använder websocket-protokollet.

När jag felsökte lokalt upptäckte jag att webbplatsen kan använda WS-protokollet normalt, det vill säga den kan kommunicera normalt med websockets och sedan observera skillnaden mellan server- och lokala nätverksförfrågningar, och fann att det är följande:



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

Lokalt:

{"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}
Servers:

{"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}
Vissa parametrar skiljer sig ursprungligen från de lokala och servermässiga, och jag hittade detTryWebSocketsparameter, lokal är sann, servern är falsk.



När man tittar på informationen visar man att om SignalR använder WebSocket-protokollet måste följande villkor uppfyllas:

  • ASP.NET 4.5
  • IIS 8.0 (Windows Server 2012 eller Windows 8)
  • WebSockets-funktionen är aktiverad på servern
  • Stöd för webbläsarens WebSockets



Det vill säga, jag upptäckte att IIS-versionen på servern är 7.5,WebSocket-protokollet stöds inte i IIS 7.5



Referenslänkar:Inloggningen med hyperlänken är synlig.




Föregående:WPF Programmerare Rest Digital Clock [med källkod]
Nästa:"Galna Programmerare"
Publicerad på 2019-04-22 09:24:01 |
Bra saker Mark.
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com