ASP.NET SignalR er et bibliotek for ASP.NET udviklere, der forenkler processen med at tilføje realtids webfunktionalitet til deres applikationer. En realtids webfunktion er en funktion, hvor serverkode kan sende indhold til en tilsluttet klient, så snart det bliver tilgængeligt, i stedet for at serveren skal vente på, at klienten anmoder om nye data.
ASP .NET SignalR er et klassebibliotek under ASP .NET, som kan realisere realtidskommunikation i ASP .NET-webprojekter (det vil sige, at klienten (websiden) og serversiden kan underrette hinanden i realtid og kaldemetoder), SignalR har tre transmissionstilstande: LongLooping (lang polling), WebSocket (HTML5 WEB-socket), Forever Frame ( lange anmodningsforbindelser, der skjuler rammen), kan eksplicit specificeres i WEB-klienten eller som standard (anbefales), hvis standarden er anvendt,SignalR vælger automatisk den relevante transmissionsmetode baseret på browserens miljø。
Fordi websitets dataindlæsning er for langsom, er grunden, at datapakken er for stor, og netværksforespørgslen er egnet, og det viser sig, at "ws" er tom, og så viser det, at SignalR ikke bruger websocket-protokollen.
Da jeg fejlsøgte lokalt, fandt jeg ud af, at hjemmesiden kan bruge WS-protokollen normalt, det vil sige, den kan kommunikere normalt med websockets og derefter observere forskellen mellem server- og lokale netværksforespørgsler, og fandt ud af, at det er som følger:
URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclehub%22%7D%5D&_=1555578162378
Lokalt:
{"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} Servere:
{"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} Nogle parametre er oprindeligt anderledes end de lokale og server-parametre, og jeg fandt detTryWebSocketsparameter, lokal er sand, server er falsk.
Ved at se på oplysningerne viser det, at hvis SignalR bruger WebSocket-protokollen, skal følgende betingelser være opfyldt:
- ASP.NET 4.5
- IIS 8.0 (Windows Server 2012 eller Windows 8)
- WebSockets-funktionen er aktiveret på serveren
- Understøttelse af browserens WebSockets
Det er, jeg fandt ud af, at IIS-versionen på serveren er 7.5,WebSocket-protokollen understøttes ikke i IIS 7.5。
Referencelinks:Hyperlink-login er synlig.
|