ASP.NET SignalR on ASP.NET arendajatele mõeldud raamatukogu, mis lihtsustab reaalajas veebifunktsionaalsuse lisamist nende rakendustesse. Reaalajas veebifunktsioon on funktsioon, kus serveri kood saab sisu kohe ühendatud kliendile saata, kui see kättesaadavaks muutub, selle asemel et server ootaks, kuni klient taotleb uusi andmeid.
ASP .NET SignalR on klassiraamatukogu ASP .NET all, mis suudab realiseerida reaalajas suhtlust ASP .NET veebiprojektides (st klient (veebileht) ja serveripool saavad üksteist reaalajas ja kõnemeetodites teavitada), SignalR-il on kolm edastusrežiimi: LongLooping (pikk küsitlus), WebSocket (HTML5 WEB pesa), Forever Frame ( pikad päringuühendused, mis varjavad raami), saab WEB kliendis selgesõnaliselt määrata või vaikimisi (soovitatav), kui vaikimisi on kasutusele võetud,SignalR valib automaatselt sobiva edastusviisi vastavalt brauseri keskkonnale。
Kuna veebilehe andmete laadimine on liiga aeglane, on põhjuseks see, et andmepakett on liiga suur ja võrgupäring sobib, ning selgub, et "ws" on tühi, ning selgub, et SignalR ei kasuta websocket-protokolli.
Kui ma lokaalselt silusin, avastasin, et veebileht saab kasutada WS protokolli normaalselt, st suhelda normaalselt websocketidega ning seejärel jälgida erinevust serveri ja kohaliku võrgu päringute vahel ning leidsin, et see on järgmine:
URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclehub%22%7D%5D&_=1555578162378
Kohalikud:
{"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} Serverid:
{"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} Mõned parameetrid erinevad algselt kohalikest ja serveritest ning ma leidsin selleTryWebSocketsparameeter, kohalik on tõene, server on vale.
Teavet vaadates selgub, et kui SignalR kasutab WebSocket protokolli, tuleb täita järgmised tingimused:
- ASP.NET 4.5
- IIS 8.0 (Windows Server 2012 või Windows 8)
- WebSockets funktsioon on serveris lubatud
- Tugi brauseri WebSocketidele
See tähendab, et leidsin, et IIS-i versioon serveris on 7.5,WebSocket protokolli IIS 7.5 ei toeta。
Viitelingid:Hüperlingi sisselogimine on nähtav.
|