ASP.NET SignalR is een bibliotheek voor ASP.NET ontwikkelaars die het proces van het toevoegen van realtime webfunctionaliteit aan hun applicaties vereenvoudigt. Een realtime webfunctie is een functie waarbij servercode content naar een verbonden client kan sturen zodra deze beschikbaar is, in plaats van dat de server wacht tot de client nieuwe data opvraagt.
ASP .NET SignalR is een klassebibliotheek onder ASP .NET, die realtime communicatie kan realiseren in ASP .NET-webprojecten (dat wil zeggen, de client (webpagina) en de serverzijde kunnen elkaar in realtime op de hoogte stellen en oproepmethoden uitvoeren). SignalR heeft drie transmissiemodi: LongLooping (lange polling), WebSocket (HTML5 WEB-socket), Forever Frame ( lange verzoekverbindingen die het frame verbergen), expliciet kunnen worden gespecificeerd in de WEB-client of standaard (aanbevolen), als de standaard wordt toegepast,SignalR kiest automatisch de juiste transmissiemethode op basis van de omgeving van de browser。
Omdat het laden van websitegegevens te traag is, is de reden dat het datapakket te groot is, het netwerkverzoek geschikt is, en blijkt dat "ws" leeg is, en vervolgens blijkt dat SignalR het websocket-protocol niet gebruikt.
Toen ik lokaal debuggede, ontdekte ik dat de website het WS-protocol normaal kan gebruiken, dat wil zeggen, normaal kan communiceren met websockets, en vervolgens het verschil tussen server- en lokale netwerkverzoeken kan observeren, en ik ontdekte dat het als volgt is:
URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclehub%22%7D%5D&_=1555578162378
Lokaal:
{"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} Sommige parameters verschillen oorspronkelijk van de lokale en serverparameters, en ik heb het gevondenTryWebSocketsparameter , lokaal is waar, server is onwaar.
Uit de informatie blijkt dat als SignalR het WebSocket-protocol gebruikt, aan de volgende voorwaarden moet worden voldaan:
- ASP.NET 4.5
- IIS 8.0 (Windows Server 2012 of Windows 8)
- De WebSockets-functie is ingeschakeld op de server
- Ondersteuning voor webbrowser WebSockets
Dit is, ik ontdekte dat de IIS-versie op de server 7.5 is,Het WebSocket-protocol wordt niet ondersteund in IIS 7.5。
Referentielinks:De hyperlink-login is zichtbaar.
|