Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 30231|Odpowiedź: 1

[Źródło] SignalR nie używa protokołu websocket do komunikacji

[Skopiuj link]
Opublikowano 18.04.2019 17:33:48 | | | |
ASP.NET SignalR to biblioteka dla ASP.NET programistów, która upraszcza proces dodawania funkcjonalności webowej w czasie rzeczywistym do ich aplikacji. Funkcja webowa w czasie rzeczywistym to taka, w której kod serwera może przesyłać zawartość do podłączonego klienta zaraz po jej udostępnieniu, zamiast czekać na żądanie nowych danych przez klienta.

ASP .NET SignalR to biblioteka klas pod ASP .NET, która umożliwia komunikację w czasie rzeczywistym w projektach internetowych ASP .NET (czyli klient (strona internetowa) i strona serwera mogą powiadamiać się nawzajem w czasie rzeczywistym i wywołać metodami). SignalR posiada trzy tryby transmisji: LongLooping (długie polling), WebSocket (gniazdo HTML5 WEB), Forever Frame ( długie połączenia żądań, które ukrywają ramkę), mogą być wyraźnie określone w kliencie WEB lub domyślnie (zalecane), jeśli domyślne jest przyjęte,SignalR automatycznie wybierze odpowiednią metodę transmisji w zależności od środowiska przeglądarki

Ponieważ ładowanie danych na stronie internetowej jest zbyt wolne, powodem jest to, że pakiet danych jest zbyt duży, a żądanie sieciowe jest odpowiednie, okazuje się, że "ws" jest puste, a następnie okazuje się, że SignalR nie korzysta z protokołu websocket.

Gdy debugowałem lokalnie, okazało się, że strona internetowa może normalnie korzystać z protokołu WS, czyli komunikować się normalnie za pomocą websocketów, a następnie obserwować różnicę między żądaniami serwera a sieci lokalnej i stwierdziłem, że wygląda to następująco:



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

Lokalnie:

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

{"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}
Niektóre parametry są pierwotnie inne niż lokalne i serwerowe, i znalazłem toTryWebSocketsparametr, lokalny jest prawdziwy, serwer fałszywy.



Analizując informacje, okazuje się, że jeśli SignalR korzysta z protokołu WebSocket, muszą być spełnione następujące warunki:

  • ASP.NET 4.5
  • IIS 8.0 (Windows Server 2012 lub Windows 8)
  • Funkcja WebSockets jest włączona na serwerze
  • Obsługa WebSockets w przeglądarce



To znaczy, odkryłem, że wersja IIS na serwerze to 7.5,Protokół WebSocket nie jest obsługiwany w IIS 7.5



Linki referencyjne:Logowanie do linku jest widoczne.




Poprzedni:Cyfrowy zegar programisty WPF Rest [z kodem źródłowym]
Następny:"Szalony programista"
Opublikowano 22.04.2019 09:24:01 |
Dobre rzeczy, Mark
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com