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.

No se puede enviar mensaje a un grupo en SignalR.

Tengo el siguiente código, que estoy intentando hacer que envíe el mensaje cuando me uno al grupo, pero no está funcionando.

public async Task JoinGroup()
{
    await Groups.AddToGroupAsync(Context.ConnectionId, "Hello");
    await Clients.Group("Hello").SendAsync("SEND", $"{Context.ConnectionId} ha sido agregado");
}

Cuando lo intento así:

public async Task JoinGroup()
{
    await Groups.AddToGroupAsync(Context.ConnectionId, "Hello");
    await Clients.All.SendAsync("SEND", $"{Context.ConnectionId} ha sido agregado");
}

Funciona, pero envía el mensaje a todos los clientes conectados, lo cual no quiero que suceda.

Obtuve el primer bloque de código de la documentación. https://learn.microsoft.com/en-us/aspnet/core/signalr/groups?view=aspnetcore-6.0

¿Alguien tiene alguna idea de por qué no está funcionando?

Edit:
Tengo un listener en el front:

connection.on("SEND", message => alert(message))
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el primer bloque de código está intentando enviar un mensaje al grupo “Hello”, pero el escucha en el front-end no está configurado para recibir mensajes de ese grupo.

    Para solucionar esto, necesitas añadir un escucha para el evento “SEND” en el grupo “Hello” en tu código del front-end:

    connection.on("HelloSEND", message => alert(message));
    

    Luego cambia la segunda línea del primer bloque de código para usar “HelloSEND” en lugar de “SEND”:

    await Clients.Group("Hello").SendAsync("HelloSEND", $"{Context.ConnectionId} ha sido agregado");
    

    Esto debería permitir enviar el mensaje correctamente al grupo “Hello” y que sea recibido por el escucha del front-end.

Comments are closed.