Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 30231|Respuesta: 1

[Fuente] SignalR no utiliza el protocolo websocket para comunicarse

[Copiar enlace]
Publicado en 18/4/2019 17:33:48 | | | |
ASP.NET SignalR es una biblioteca para desarrolladores de ASP.NET que simplifica el proceso de añadir funcionalidad web en tiempo real a sus aplicaciones. Una función web en tiempo real es una función en la que el código del servidor puede enviar contenido a un cliente conectado tan pronto como esté disponible, en lugar de que el servidor espere a que el cliente solicite nuevos datos.

ASP .NET SignalR es una biblioteca de clases bajo ASP .NET, que puede realizar comunicación en tiempo real en proyectos web ASP .NET (es decir, el cliente (página web) y el lado del servidor pueden notificarse mutuamente en tiempo real y llamar a métodos). SignalR tiene tres modos de transmisión: LongLooping (sondeo largo), WebSocket (socket HTML5 WEB), Forever Frame ( conexiones de petición larga que ocultan el marco), pueden especificarse explícitamente en el cliente WEB o por defecto (recomendado), si se adopta el valor predeterminado,SignalR seleccionará automáticamente el método de transmisión adecuado según el entorno del navegador

Como la carga de datos del sitio web es demasiado lenta, la razón es que el paquete de datos es demasiado grande, la solicitud de red es adecuada, y se detecta que "ws" está vacío, y luego se descubre que SignalR no utiliza el protocolo websocket.

Cuando depuré localmente, descubrí que la web puede usar el protocolo WS normalmente, es decir, puede comunicarse normalmente con websockets, y luego observar la diferencia entre las solicitudes de servidor y las de red local, y descubrí que es la siguiente:



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

Local:

{"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}
Servidores:

{"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}
Algunos parámetros son originalmente diferentes de los locales y del servidor, y lo encontréTryWebSocketsparámetro, local es verdadero, servidor es falso.



Al observar la información, se observa que si SignalR utiliza el protocolo WebSocket, deben cumplirse las siguientes condiciones:

  • ASP.NET 4.5
  • IIS 8.0 (Windows Server 2012 o Windows 8)
  • La función WebSockets está habilitada en el servidor
  • Soporte para WebSockets de navegador



Es decir, he visto que la versión IIS en el servidor es la 7.5,El protocolo WebSocket no es compatible en IIS 7.5



Enlaces de referencia:El inicio de sesión del hipervínculo es visible.




Anterior:WPF Programer Rest Digital Clock [con código fuente]
Próximo:"Programador loco"
Publicado en 22/4/2019 9:24:01 |
Cosas buenas, Mark
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com