ASP.NET SignalR je knižnica pre ASP.NET vývojárov, ktorá zjednodušuje proces pridávania webových funkcií v reálnom čase do ich aplikácií. Funkcia real-time webu je funkcia, pri ktorej serverový kód môže odoslať obsah pripojenému klientovi hneď, ako je dostupný, namiesto toho, aby server čakal, kým klient požiada o nové dáta.
ASP .NET SignalR je knižnica triedy pod ASP .NET, ktorá dokáže realizovať komunikáciu v reálnom čase v ASP .NET webových projektoch (teda klient (webová stránka) a serverová strana sa môžu navzájom informovať v reálnom čase a volať metódami). SignalR má tri režimy prenosu: LongLooping (dlhé polling), WebSocket (HTML5 WEB socket), Forever Frame ( dlhé požiadavkové spojenia, ktoré rám skrývajú), môžu byť explicitne špecifikované v WEB klientovi alebo predvolene (odporúčané), ak je predvolené nastavené,SignalR automaticky vyberie vhodnú metódu prenosu na základe prostredia prehliadača。
Pretože načítanie dát na webovej stránke je príliš pomalé, dôvodom je, že dátový paket je príliš veľký, sieťový požiadavka je vhodná, a zistí sa, že "ws" je prázdny, a potom sa zistí, že SignalR nepoužíva protokol websocket.
Keď som ladil lokálne, zistil som, že webová stránka dokáže bežne používať protokol WS, teda dokáže normálne komunikovať cez websockety, a potom pozorovať rozdiel medzi požiadavkami servera a lokálnej siete, a zistil som, že je to nasledovné:
URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclehub%22%7D%5D&_=1555578162378
Miestne:
{"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} Servery:
{"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} Niektoré parametre sú pôvodne odlišné od lokálnych a serverových a našiel som toTryWebSocketsParametre, lokálne je pravda, server je nepravda.
Pri pohľade na informácie sa zistilo, že ak SignalR používa protokol WebSocket, musia byť splnené nasledujúce podmienky:
- ASP.NET 4.5
- IIS 8.0 (Windows Server 2012 alebo Windows 8)
- Funkcia WebSockets je na serveri povolená
- Podpora prehliadačových WebSockets
Zistil som, že verzia IIS na serveri je 7.5,Protokol WebSocket nie je podporovaný v IIS 7.5。
Referenčné odkazy:Prihlásenie na hypertextový odkaz je viditeľné.
|