Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 30231|Отговор: 1

[Източник] SignalR не използва протокола websocket за комуникация

[Копирай линк]
Публикувано в 18.04.2019 г. 17:33:48 ч. | | | |
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



Референтни връзки:Входът към хиперлинк е видим.




Предишен:WPF Programmer Rest Digital Clock [с изходен код]
Следващ:"Лудият програмист"
Публикувано в 22.04.2019 г. 9:24:01 ч. |
Добри неща, Марк
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com