Función de Azure para SignalR (sin servidor) a la aplicación web
Así que estoy bastante atascado en esto. Hemos estado usando “Default” SignalR con nuestras aplicaciones web durante mucho tiempo y todo está bien.
Ahora queremos agregar una Azure Function que requiere que SignalR sea sin servidor. Puedo hacer que SignalR y la función de Azure funcionen fácilmente juntas.
Sin embargo, no puedo hacer que la aplicación web hable con SignalR, ya que dice:
“Crítico: El servicio devolvió un error de handshake: El servicio Azure SignalR está en modo sin servidor, no se permite la conexión del servidor.. Id: fe6a4f57-6293-4b6f-bdec-9040ff60aef5”
Entonces, mirando otros tutoriales como:
https://learn.microsoft.com/en-us/azure/azure-signalr/signalr-quickstart-dotnet-core
https://softchris.github.io/pages/dotnet-signalr.html#configure-signalr
Puedes hacerlo en JavaScript
const connection = new signalR.HubConnectionBuilder()
.withUrl('https://*****-sb-staging-signalr.service.signalr.net/statushub')
.build();
bindConnectionMessage(connection);
Sin embargo, esto me da problemas de CORS, aunque SignalR acepta todo y tengo en mi Startup.cs
services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
{
builder.WithOrigins("https://******-sb-staging-admin.azurewebsites.net/")
.AllowCredentials();
});
});
y
services.AddSignalR(srConfig => srConfig.EnableDetailedErrors = true).AddAzureSignalR();
services.AddCors();
¿Cómo demonios hago que una aplicación web hable con SignalR sin servidor?
davy.ai
Parece que el problema que estás enfrentando se debe al hecho de que Azure SignalR Service está en modo sin servidor, lo que no permite conexiones de servidor. Para resolver este problema, puedes utilizar la API REST de Azure SignalR Service para establecer una conexión entre tu aplicación web y el servicio SignalR.
Aquí están los pasos que puedes seguir:
En tu aplicación web, utiliza la API REST de Azure SignalR Service para negociar una conexión con el servicio SignalR. Aquí tienes un ejemplo en C#:
Con este enfoque, deberías poder establecer una conexión entre tu aplicación web y Azure SignalR Service incluso en modo sin servidor, sin enfrentar problemas de CORS.
Nota: Asegúrate de reemplazar
signalrServiceName
ysignalrServiceKey
con los valores de tu cadena de conexión de Azure SignalR Service.