ASP.NET SignalR est une bibliothèque destinée aux développeurs ASP.NET qui simplifie le processus d’ajout de fonctionnalités web en temps réel à leurs applications. Une fonctionnalité web en temps réel est une fonctionnalité où le code serveur peut envoyer du contenu à un client connecté dès qu’il devient disponible, plutôt que le serveur attende que le client demande de nouvelles données.
ASP .NET SignalR est une bibliothèque de classes sous ASP .NET, qui peut assurer une communication en temps réel dans les projets web ASP .NET (c’est-à-dire que le client (page web) et le côté serveur peuvent s’entrevoir en temps réel et appeler des méthodes). SignalR dispose de trois modes de transmission : LongLooping (long polling), WebSocket (socket HTML5 WEB), Forever Frame ( longues connexions de requête qui masquent la trame), peuvent être explicitement spécifiées dans le client WEB ou par défaut (recommandé), si le défaut est adopté,SignalR sélectionnera automatiquement la méthode de transmission appropriée en fonction de l’environnement du navigateur。
Parce que le chargement des données du site est trop lent, la raison est que le paquet de données est trop volumineux, que la requête réseau est appropriée, qu’on constate que « ws » est vide, puis que SignalR n’utilise pas le protocole websocket.
En déboguant localement, j’ai constaté que le site web pouvait utiliser normalement le protocole WS, c’est-à-dire communiquer normalement avec des websockets, puis observer la différence entre les requêtes serveur et réseau local, et j’ai constaté que c’était le suivant :
URL : http ://ip/signalr/negotiate ?clientProtocol=1.5&connectionData= %5B %7B %22name %22%3A %22positionvehiclehub %22%7D %5D&_=1555578162378
Locaux :
{"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} Serveurs :
{"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} Certains paramètres sont à l’origine différents de ceux locaux et serveur, et je l’ai trouvéTryWebSocketsparamètre, local est vrai, serveur est faux.
En examinant les informations, il est constaté que si SignalR utilise le protocole WebSocket, les conditions suivantes doivent être remplies :
- ASP.NET 4,5
- IIS 8.0 (Windows Server 2012 ou Windows 8)
- La fonctionnalité WebSockets est activée sur le serveur
- Prise en charge des WebSockets dans les navigateurs
C’est-à-dire que j’ai constaté que la version IIS sur le serveur est la 7.5,Le protocole WebSocket n’est pas pris en charge dans IIS 7.5。
Liens de référence :La connexion hyperlientérée est visible.
|