ASP.NET SignalR on kirjasto ASP.NET kehittäjille, joka yksinkertaistaa reaaliaikaisen verkkotoiminnallisuuden lisäämistä sovelluksiinsa. Reaaliaikainen verkkoominaisuus on ominaisuus, jossa palvelinkoodi voi siirtää sisällön yhdistetylle asiakkaalle heti, kun se tulee saataville, sen sijaan että palvelin odottaisi asiakkaan pyytävän uutta dataa.
ASP .NET SignalR on luokkakirjasto ASP .NET:n alaisuudessa, joka mahdollistaa reaaliaikaisen viestinnän ASP .NET web-projekteissa (eli asiakas (verkkosivu) ja palvelinpuoli voivat ilmoittaa toisilleen reaaliaikaisesti ja kutsutavoin), SignalR:ssä on kolme siirtotilaa: LongLooping (pitkä kysely), WebSocket (HTML5 WEB -soketti), Forever Frame ( pitkät pyyntöyhteydet, jotka piilottavat kehyksen), voidaan määritellä eksplisiittisesti WEB-asiakkaassa tai oletuksena (suositeltavasti), jos oletus on otettu käyttöön,SignalR valitsee automaattisesti sopivan lähetystavan selaimen ympäristön perusteella。
Koska verkkosivuston datan lataus on liian hidasta, syynä on se, että datapaketti on liian suuri, verkkopyyntö on sopiva, ja "ws" on tyhjä, minkä jälkeen SignalR ei käytä websocket-protokollaa.
Kun debuggasin paikallisesti, huomasin, että verkkosivusto voi käyttää WS-protokollaa normaalisti, eli kommunikoida normaalisti websocketien kanssa, ja sitten havainnoida palvelin- ja paikallisverkkopyyntöjen erot, ja huomasin, että se on seuraava:
URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclehub%22%7D%5D&_=1555578162378
Paikallinen:
{"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} Palvelimet:
{"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} Jotkut parametrit ovat alun perin erilaisia kuin paikalliset ja palvelin-parametrit, ja löysin senTryWebSocketsparametri, paikallinen on totta, palvelin on epätosi.
Tietoja tarkasteltaessa havaittiin, että jos SignalR käyttää WebSocket-protokollaa, seuraavat ehdot on täytettävä:
- ASP.NET 4.5
- IIS 8.0 (Windows Server 2012 tai Windows 8)
- WebSockets-ominaisuus on käytössä palvelimella
- Tuki selaimen WebSocketeille
Huomasin, että IIS-versio palvelimella on 7.5,WebSocket-protokollaa ei tueta IIS 7.5:ssä。
Viitelinkit:Hyperlinkin kirjautuminen on näkyvissä.
|