es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo iniciar otra conexión de SignalR basada en otra

Estoy utilizando una aplicación web de JavaScript que se conecta a través de SignalR a un servicio A de aspnet core, que reside en un contenedor de Docker. Necesito agregar otro servicio B como intermediario entre los dos. Mi suposición fue que debería dividir la conexión SignalR en dos: primero entre la aplicación web de JavaScript y el servicio B, y segundo entre el servicio B y el servicio A.

Hasta ahora SignalR funciona entre la aplicación web de JavaScript y el servicio B. Mientras que el mensaje del servicio B llega al servicio A, la respuesta del servicio A no recibe respuesta del servicio B (para la negociación del transporte).

En el servicio B obtengo un error 404, y en el servicio A veo un tiempo de espera de conexión ws.

Esto es lo que hice en el servicio B:

targetUrl = serviceA_signalR_Url + javascript_app_request_query_string
_connection = new HubConnectionBuilder()
.WithUrl(targetUrl, options => {
{
options.Transports = HttpTransportType.WebSockets;
})
.Build();
_connection.StartAsync.Wait();

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber un problema en la negociación del transporte entre el servicio B y el servicio A. Una opción a probar es agregar el middleware UseProxyToSpaDevelopmentServer en el método Configure del archivo Startup.cs del servicio B. Este middleware ayuda a direccionar las solicitudes al servidor de desarrollo de la aplicación web de JavaScript, y puede ayudar en la negociación del transporte.

    Además, asegúrese de que serviceA_signalR_Url esté configurado correctamente y que javascript_app_request_query_string no esté causando ningún problema. También puede intentar diferentes tipos de transporte en las opciones de WithUrl, como HttpTransportType.LongPolling, para ver si eso resuelve el problema.

    Si el problema persiste, puede ser necesario realizar una depuración adicional y un análisis de problemas para identificar la causa raíz del problema.

Comments are closed.