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();
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étodoConfigure
del archivoStartup.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 quejavascript_app_request_query_string
no esté causando ningún problema. También puede intentar diferentes tipos de transporte en las opciones deWithUrl
, comoHttpTransportType.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.