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ó.
|