ASP.NET SignalR este o bibliotecă pentru dezvoltatori ASP.NET care simplifică procesul de adăugare a funcționalității web în timp real aplicațiilor lor. O funcție web în timp real este o funcție în care codul serverului poate trimite conținut către un client conectat imediat ce devine disponibil, în loc ca serverul să aștepte ca clientul să solicite date noi.
ASP .NET SignalR este o bibliotecă de clase sub ASP .NET, care poate realiza comunicare în timp real în proiectele web ASP .NET (adică clientul (pagina web) și partea serverului se pot notifica reciproc în timp real și pot chema metode), SignalR are trei moduri de transmisie: LongLooping (interogare lungă), WebSocket (socket HTML5 WEB), Forever Frame ( conexiuni lungi care ascund cadrul), pot fi specificate explicit în clientul WEB sau implicit (recomandat), dacă implicitul este adoptat,SignalR va selecta automat metoda de transmitere corespunzătoare în funcție de mediul browserului。
Pentru că încărcarea datelor site-ului este prea lentă, motivul este că pachetul de date este prea mare, iar cererea de rețea este potrivită, se constată că "ws" este gol, iar apoi se constată că SignalR nu folosește protocolul websocket.
Când am depanat local, am descoperit că site-ul poate folosi protocolul WS normal, adică poate comunica normal cu websocket-uri, apoi observă diferența dintre cererile serverului și cele de rețea locală, și am constatat că este următoarea:
URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclevehiclehub%22%7D%5D&_=1555578162378
Local:
{"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} Servere:
{"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} Unii parametri sunt inițial diferiți de cei locali și de server, și am descoperit astaTryWebSocketsparametrul, local este adevărat, serverul este fals.
Analizând informațiile, se constată că, dacă SignalR folosește protocolul WebSocket, trebuie îndeplinite următoarele condiții:
- ASP.NET 4.5
- IIS 8.0 (Windows Server 2012 sau Windows 8)
- Funcția WebSockets este activată pe server
- Suport pentru browserul WebSockets
Adică, am descoperit că versiunea IIS de pe server este 7.5,Protocolul WebSocket nu este suportat în IIS 7.5。
Linkuri de referință:Autentificarea cu hyperlink este vizibilă.
|