Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 30231|Vastaus: 1

[Lähde] SignalR ei käytä websocket-protokollaa viestintään

[Kopioi linkki]
Julkaistu 18.4.2019 17.33.48 | | | |
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ä.




Edellinen:WPF Programmer Rest Digital Clock [lähdekoodilla]
Seuraava:"Hullu ohjelmoija"
Julkaistu 22.4.2019 9.24.01 |
Hyvät asiat, Mark
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com