Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 30231|Răspunde: 1

[Sursă] SignalR nu folosește protocolul websocket pentru a comunica

[Copiază linkul]
Postat pe 18.04.2019 17:33:48 | | | |
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ă.




Precedent:WPF Programmer Rest Digital Clock [cu cod sursă]
Următor:"Programator nebun"
Postat pe 22.04.2019 09:24:01 |
Lucruri bune, Mark
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com