Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 30231|Atsakyti: 1

[Šaltinis] SignalR nenaudoja websocket protokolo ryšiui

[Kopijuoti nuorodą]
Paskelbta 2019-04-18 17:33:48 | | | |
ASP.NET SignalR yra ASP.NET kūrėjams skirta biblioteka, kuri supaprastina realaus laiko žiniatinklio funkcijų pridėjimo prie jų programų procesą. Realaus laiko žiniatinklio funkcija yra funkcija, kai serverio kodas gali perkelti turinį į prijungtą klientą, kai tik jis tampa prieinamas, o ne laukti, kol klientas paprašys naujų duomenų.

ASP .NET SignalR yra ASP .NET klasės biblioteka, kuri gali realizuoti ryšį realiuoju laiku ASP .NET žiniatinklio projektuose (tai yra, klientas (tinklalapis) ir serverio pusė gali pranešti vienas kitam realiuoju laiku ir skambinti metodais), SignalR turi tris perdavimo režimus: LongLooping (ilga apklausa), WebSocket (HTML5 WEB lizdas), Forever Frame ( ilgos užklausos jungtys, kurios slepia rėmelį), gali būti aiškiai nurodytas WEB kliente arba pagal nutylėjimą (rekomenduojama), jei numatytasis yra priimtas,"SignalR" automatiškai parinks tinkamą perdavimo būdą pagal naršyklės aplinką

Kadangi svetainės duomenų įkėlimas yra per lėtas, priežastis yra ta, kad duomenų paketas yra per didelis, o tinklo užklausa yra tinkama, ir nustatoma, kad "ws" yra tuščias, o tada nustatoma, kad "SignalR" nenaudoja "websocket" protokolo.

Kai derinau vietoje, pastebėjau, kad svetainė gali normaliai naudoti WS protokolą, tai yra, ji gali normaliai bendrauti su žiniatinklio lizdais, o tada stebėti skirtumą tarp serverio ir vietinio tinklo užklausų, ir nustatė, kad jis yra toks:



URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclehub%22%7D%5D&_=1555578162378

Vietinis:

{"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}
Serveriai:

{"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}
Kai kurie parametrai iš pradžių skiriasi nuo vietinių ir serverio, ir aš jį radauTryWebSocketsparametras, vietinis yra teisingas, serveris yra klaidingas.



Pažvelgus į informaciją, nustatyta, kad jei "SignalR" naudoja "WebSocket" protokolą, turi būti įvykdytos šios sąlygos:

  • ASP.NET 4.5
  • IIS 8.0 ("Windows Server 2012" arba "Windows 8")
  • Serveryje įjungta WebSockets funkcija
  • Naršyklės "WebSockets" palaikymas



Tai yra, aš radau, kad IIS versija serveryje yra 7.5,"WebSocket" protokolas nepalaikomas IIS 7.5



Nuorodos nuorodos:Hipersaito prisijungimas matomas.




Ankstesnis:WPF programuotojo poilsio skaitmeninis laikrodis [su šaltinio kodu]
Kitą:"Pašėlęs programuotojas"
Paskelbta 2019-04-22 09:24:01 |
Geri dalykai Markas
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com