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.
|