Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 30231|Válasz: 1

[Forrás] A SignalR nem használja a websocket protokollt a kommunikációra

[Linket másol]
Közzétéve 2019. 04. 18. 17:33:48 | | | |
ASP.NET SignalR egy könyvtár ASP.NET fejlesztőknek, amely leegyszerűsíti a valós idejű webfunkciók hozzáadásának folyamatát az alkalmazásaikhoz. A valós idejű webfunkció olyan funkció, amelyben a szerver kódja azonnal továbbíthatja a tartalmat egy csatlakoztatott kliensre, amint az elérhetővé válik, ahelyett, hogy a szerver várná, amíg az ügyfél új adatokat kér.

Az ASP .NET SignalR egy osztálykönyvtár az ASP .NET alatt, amely valós idejű kommunikációt képes valósítani az ASP .NET webprojektjeiben (azaz a kliens (weboldal) és a szerver oldal valós idejű és hívási módok segítségével értesítheti egymást), a SignalR-nek három átviteli módja van: LongLooping (hosszú lekérdezés), WebSocket (HTML5 WEB socket), Forever Frame ( hosszú kérés kapcsolatok, amelyek elrejtik a keretet), kifejezetten megadhatók a WEB klienser vagy alapértelmezettségben (ajánlott), ha az alapértelmezett opció elfogadott,A SignalR automatikusan kiválasztja a megfelelő átviteli módot a böngésző környezete alapján

Mivel a weboldal adatbetöltése túl lassú, az oka, hogy az adatcsomag túl nagy, a hálózati kérés megfelelő, és kiderül, hogy a "ws" üres, és aztán a SignalR nem használja a websocket protokollt.

Amikor helyben hibakeresést végeztem, azt tapasztaltam, hogy a weboldal normálisan képes használni a WS protokollt, vagyis normálisan tud kommunikálni a websocketekkel, majd megfigyeli a szerver- és helyi hálózati kérések közötti különbséget, és azt tapasztaltam, hogy ez a következő:



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

Helyi:

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

{"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}
Néhány paraméter eredetileg eltér a helyi és szervertől, és megtaláltamTryWebSocketsparaméter, helyi igaz, szerver hamis.



Az információk alapján megállapítható, hogy ha a SignalR a WebSocket protokollt használja, az alábbi feltételeknek kell teljesülnie:

  • ASP.NET 4.5
  • IIS 8.0 (Windows Server 2012 vagy Windows 8)
  • A WebSockets funkciója engedélyezett a szerveren
  • Böngészős WebSocketek támogatása



Ez az, hogy azt tapasztaltam, hogy az IIS verzió a szerveren 7.5-ös,A WebSocket protokoll nem támogatott az IIS 7.5-ben



Hivatkozások:A hiperlink bejelentkezés látható.




Előző:WPF Programmer Rest digitális óra [forráskóddal]
Következő:"Őrült programozó"
Közzétéve 2019. 04. 22. 9:24:01 |
Jó dolgok, Mark
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com