Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 30231|Odpověď: 1

[Zdroj] SignalR nepoužívá protokol websocket ke komunikaci

[Kopírovat odkaz]
Zveřejněno 18.04.2019 17:33:48 | | | |
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é.




Předchozí:WPF programátor Rest digitální hodiny [se zdrojovým kódem]
Další:"Bláznivý programátor"
Zveřejněno 22.04.2019 9:24:01 |
Dobré věci, Marku
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com