ASP.NET SignalR je knihovna pro ASP.NET vývojáře, která zjednodušuje proces přidávání webových funkcí v reálném čase do jejich aplikací. Funkce webu v reálném čase je funkce, kdy serverový kód může okamžitě odesílat obsah připojenému klientovi, jakmile je dostupný, místo aby server čekal, až klient požádá o nová data.
ASP .NET SignalR je knihovna třídy pod ASP .NET, která umožňuje komunikaci v reálném čase v ASP .NET webových projektech (to znamená, že klient (webová stránka) a serverová strana se mohou vzájemně informovat v reálném čase a volat metodami). SignalR má tři režimy přenosu: LongLooping (dlouhé polling), WebSocket (HTML5 WEB socket), Forever Frame ( dlouhá spojení požadavků, která rámek skrývají), může být explicitně specifikována v WEB klientovi nebo ve výchozím nastavení (doporučeno), pokud je výchozí režim přijat,SignalR automaticky vybere vhodnou metodu přenosu na základě prostředí prohlížeče。
Protože načítání dat na webu je příliš pomalé, důvodem je, že datový paket je příliš velký a síťový požadavek je vhodný, a zjistí se, že "ws" je prázdné, a pak se zjistí, že SignalR protokol websocket nepoužívá.
Když jsem ladil lokálně, zjistil jsem, že web může normálně používat protokol WS, tedy komunikovat normálně s websockety, a pak pozorovat rozdíl mezi požadavky serveru a lokální sítě, a zjistil jsem, že je to následující:
URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclehub%22%7D%5D&_=1555578162378
Místní:
{"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} Některé parametry jsou původně jiné než lokální a serverové, a našel jsem toTryWebSocketsparametr, lokální je pravda, server je nepravda.
Při pohledu na informace se zjistilo, že pokud SignalR používá protokol WebSocket, musí být splněny následující podmínky:
- ASP.NET 4,5
- IIS 8.0 (Windows Server 2012 nebo Windows 8)
- Funkce WebSockets je na serveru povolena
- Podpora WebSockets v prohlížeči
Zjistil jsem, že verze IIS na serveru je 7.5,Protokol WebSocket není v IIS 7.5 podporován。
Referenční odkazy:Přihlášení k hypertextovému odkazu je viditelné.
|