Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 30231|Odgovoriti: 1

[Vir] SignalR ne uporablja protokola websocket za komunikacijo

[Kopiraj povezavo]
Objavljeno na 18. 04. 2019 17:33:48 | | | |
ASP.NET SignalR je knjižnica za ASP.NET razvijalce, ki poenostavi postopek dodajanja funkcionalnosti spletnih storitev v realnem času njihovim aplikacijam. Spletna funkcija v realnem času je funkcija, kjer strežniška koda lahko vsebino potisne na povezanega odjemalca takoj, ko postane na voljo, namesto da bi strežnik čakal, da odjemalec zahteva nove podatke.

ASP .NET SignalR je knjižnica razredov pod ASP .NET, ki omogoča komunikacijo v realnem času v spletnih projektih ASP .NET (to pomeni, da se lahko odjemalec (spletna stran) in strežniška stran medsebojno obveščata v realnem času in kličeta). SignalR ima tri načine prenosa: LongLooping (dolgo polling), WebSocket (HTML5 WEB socket), Forever Frame ( dolge povezave zahtev, ki skrijejo okvir), je mogoče eksplicitno določiti v WEB odjemalcu ali privzeto (priporočeno), če je privzeto sprejeto,SignalR bo samodejno izbral ustrezno metodo prenosa glede na okolje brskalnika

Ker je nalaganje podatkov na spletni strani prepočasno, je razlog v tem, da je podatkovni paket prevelik, omrežni zahtevek je primeren, in ugotovi se, da je "ws" prazen, nato pa se izkaže, da SignalR ne uporablja protokola websocket.

Ko sem lokalno odpravljal napake, sem ugotovil, da spletna stran lahko normalno uporablja protokol WS, torej lahko normalno komunicira z websockets, nato pa opazuje razliko med strežniškimi in lokalnimi omrežnimi zahtevami ter ugotovil, da je naslednja:



URL:http://ip/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22positionvehiclehub%22%7D%5D&_=1555578162378

Lokalno:

{"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}
Strežniki:

{"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}
Nekateri parametri so sprva drugačni od lokalnih in strežniških, in to sem našelTryWebSocketsparameter, lokalno je resnično, strežnik je napačno.



Ob pregledu informacij ugotovimo, da če SignalR uporablja protokol WebSocket, morajo biti izpolnjeni naslednji pogoji:

  • ASP.NET 4.5
  • IIS 8.0 (Windows Server 2012 ali Windows 8)
  • Funkcija WebSockets je omogočena na strežniku
  • Podpora za brskalnik WebSockets



Ugotovil sem, da je IIS različica na strežniku 7.5,Protokol WebSocket ni podprt v IIS 7.5



Referenčne povezave:Prijava do hiperpovezave je vidna.




Prejšnji:WPF programer Rest Digital Clock [z izvorno kodo]
Naslednji:"Nori programer"
Objavljeno na 22. 04. 2019 09:24:01 |
Dobre stvari, Mark
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com