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.

El servicio Azure Signal R no funciona en la aplicación Blazor Wasm.

Estoy tratando de configurar el servicio Azure Signal R. Actualmente, puedo hacer que funcione si envío un mensaje a TODOS los clientes, pero si intento usar Grupos, no envía ningún mensaje. Sospecho que tiene que ver con el servicio Azure Signal R. Actualmente estoy ejecutándolo localmente.

En mi archivo Startup.cs de mi Web Api tengo lo siguiente:

services.AddSignalR()
    .AddAzureSignalR(options => options.Endpoints = new[]
        {
            new ServiceEndpoint(Configuration.GetConnectionString("AzureSignalRConnection"))
        });

y

app.UseEndpoints(endpoints =>
{
    endpoints.MapRazorPages();
    endpoints.MapControllers();
    endpoints.MapHub<signalrhub>("/SingalRHub");
});

Luego, en mi Hub:

public class SignalRHub : Hub
{
    public async Task Join(long deviceId)
    {
        await Groups.AddToGroupAsync(Context.ConnectionId, deviceId.ToString());
    }

    public async Task ReadTime(int deviceId)
    {
        await Clients.Group(deviceId.ToString()).SendAsync("ReadResponse", DateTime.Now.ToString());
    }
}

En el lado del cliente (aplicación Blazor wasm):

private async Task InitializeSignalR()
{
    // Inicializar SignalR
    _hubConnection = new HubConnectionBuilder()
        .WithUrl(_navigationManager.ToAbsoluteUri("/SignalRHub"))
        .Build();

    _hubConnection.On<string>("ReadResponse", (message) =>
    {
        Console.WriteLine($"Read Response: {message}");
    });

    // Conectar al hub
    await _hubConnection.StartAsync();

    // Registrar para recibir mensajes para este DeviceId
    await _hubConnection.SendAsync("Join", DeviceId);
}

Ahora, lo extraño es que cuando llamo a esto en mi cliente, no recibo ninguna respuesta. Sin embargo, si lo cambio a:

await Clients.All.SendAsync("ReadResponse", DateTime.Now.ToString());

¡Entonces mi cliente recibirá el mensaje!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es probable que haya un problema con la forma en que se están configurando los grupos en el servicio Azure Signal R. Una posible solución podría ser verificar si la instancia del servicio Azure Signal R se ha configurado correctamente para admitir grupos.

    Otra posible solución podría ser verificar si el nombre del grupo que se está utilizando en la llamada al método Clients.Group es el nombre correcto del grupo. Es posible que el nombre del grupo no se esté transmitiendo o convirtiendo correctamente.

    Además, podría ser útil revisar los registros o mensajes de error que se generan para encontrar la causa raíz del problema. Esto podría ayudar a identificar cualquier problema con la configuración o la configuración del servicio Azure Signal R.

    Finalmente, podría valer la pena considerar el uso de un método de gestión de grupos diferente o verificar si hay dependencias o requisitos adicionales que deben cumplirse para usar correctamente los grupos con el servicio Azure Signal R.

Comments are closed.