ASP.NET SignalR ist eine Bibliothek für ASP.NET Entwickler, die den Prozess des Hinzufügens von Echtzeit-Webfunktionen zu ihren Anwendungen vereinfacht. Eine Echtzeit-Webfunktion ist eine Funktion, bei der Servercode Inhalte sofort an einen verbundenen Client senden kann, sobald sie verfügbar sind, anstatt darauf warten zu müssen, dass der Client neue Daten anfordert.
ASP .NET SignalR ist eine Klassenbibliothek unter ASP .NET, die Echtzeitkommunikation in ASP .NET-Webprojekten realisieren kann (das heißt, der Client (Webseite) und die Serverseite können sich in Echtzeit benachrichtigen und Aufrufmethoden benachrichtigen). SignalR verfügt über drei Übertragungsmodi: LongLooping (lange Abfrage), WebSocket (HTML5 WEB-Socket), Forever Frame ( lange Anfragenverbindungen, die den Rahmen verbergen), explizit im WEB-Client angegeben oder standardmäßig (empfohlen), falls der Standard angewendet wird,SignalR wählt automatisch die passende Übertragungsmethode basierend auf der Umgebung des Browsers aus。
Da das Laden der Website-Daten zu langsam ist, liegt der Grund darin, dass das Datenpaket zu groß ist und die Netzwerkanfrage geeignet ist, und es stellt sich heraus, dass "ws" leer ist, und dann stellt sich heraus, dass SignalR das Websocket-Protokoll nicht verwendet.
Als ich lokal debuggte, stellte ich fest, dass die Website das WS-Protokoll normal verwenden kann, das heißt, sie kann normal mit Websockets kommunizieren und dann den Unterschied zwischen Server- und lokalen Netzwerkanfragen beobachten, und stellte fest, dass es wie folgt ist:
URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclehub%22%7D%5D&_=1555578162378
Lokal:
{"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} Server:
{"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} Einige Parameter unterscheiden sich ursprünglich von lokalen und Serverparametern, und ich habe das gefundenTryWebSocketsParameter, lokal ist wahr, Server ist falsch.
Beim Betrachten der Informationen stellt sich heraus, dass bei Verwendung des WebSocket-Protokolls durch SignalR folgende Bedingungen erfüllt sein müssen:
- ASP.NET 4.5
- IIS 8.0 (Windows Server 2012 oder Windows 8)
- Die WebSockets-Funktion ist auf dem Server aktiviert
- Unterstützung für Browser-WebSockets
Das ist, ich habe festgestellt, dass die IIS-Version auf dem Server 7.5 ist,Das WebSocket-Protokoll wird in IIS 7.5 nicht unterstützt。
Referenzlinks:Der Hyperlink-Login ist sichtbar.
|