ASP.NET SignalR е библиотека за ASP.NET разработчици, която опростява процеса на добавяне на уеб функционалност в реално време към техните приложения. Функцията за уеб режим в реално време е функция, при която сървърният код може да изпраща съдържание към свързан клиент веднага щом стане достъпно, вместо сървърът да чака клиентът да поиска нови данни.
ASP .NET SignalR е библиотека с класове под ASP .NET, която може да реализира комуникация в реално време в уеб проекти на ASP .NET (т.е. клиентът (уеб страница) и сървърната страна могат да уведомяват взаимно в реално време и методи за извикване). SignalR има три режима на предаване: LongLooping (дълго проучване), WebSocket (HTML5 WEB socket), Forever Frame ( дълги заявени връзки, които скриват рамката), могат да бъдат изрично определени в WEB клиента или по подразбиране (препоръчително), ако по подразбиране е приета,SignalR автоматично избира подходящия метод на предаване според средата на браузъра。
Тъй като зареждането на данните на уебсайта е твърде бавно, причината е, че пакетът от данни е твърде голям, а мрежовата заявка е подходяща, и се установява, че "ws" е празен, а след това се установява, че SignalR не използва websocket протокола.
Когато дебъгвах локално, установих, че уебсайтът може да използва WS протокола нормално, тоест да комуникира нормално с websockets и след това да наблюдава разликата между сървърни и локални мрежови заявки, и установих, че е следният:
URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclehub%22%7D%5D&_=1555578162378
Местно:
{"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} Сървъри:
{"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} Някои параметри първоначално са различни от локалните и сървърните, и аз го открихTryWebSocketsпараметър, локално е вярно, сървърът е фалшив.
Разглеждайки информацията, се установява, че ако SignalR използва протокола WebSocket, трябва да бъдат изпълнени следните условия:
- ASP.NET 4.5
- IIS 8.0 (Windows Server 2012 или Windows 8)
- Функцията WebSockets е активирана на сървъра
- Поддръжка на WebSockets за браузър
Това е, открих, че IIS версията на сървъра е 7.5,Протоколът WebSocket не се поддържа в IIS 7.5。
Референтни връзки:Входът към хиперлинк е видим.
|