Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

384
Vistas
Encuentre el cliente de SignalR por ID en su contexto

Entonces, quiero enviar un mensaje a un cliente específico a través de SignalR. Ese cliente no es Clients.Caller; actualmente solo puedo identificarlo llamándolo "ID", una propiedad en el contexto: this.Context.Items["ID"]

Entonces, para encontrar un cliente por su ID, ¿cómo... accedo a todos los clientes o contextos? ¿O debo guardar esta identificación de una manera diferente? Este no es el ID de conexión, es un ID que se asigna a algo en la base de datos.

Básicamente me gustaría ir Clients.Single(c => c.Items["ID"] == specificId).SendMessage(msg);

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Puede enviar la ID a los clientes usando context.Clients.User(...) o context.Clients.All() . Luego, en JavaScript, lea la ID y compárela con lo que hay en la página. Si es un partido, realiza alguna acción; de lo contrario ignorar.

Como ejemplo, supongamos que su aplicación está procesando un registro específico en una pantalla de edición. El ID de registro está en la página como un campo de formulario. Envía un mensaje de SignalR desde C# con el ID. Haces una comparación en JavaScript entre el ID y el valor del campo de formulario; si coinciden, muestra un mensaje tostador, realiza otro procesamiento, etc.

over 4 years ago · Santiago Trujillo Denunciar

0

En el método OnConnectedAsync de su concentrador, puede agrupar a un usuario por su "ID" cada vez que se conecte.

P.EJ:

 public async override Task OnConnectedAsync() { var currentUserId = /*get your current users id here*/ await Groups.AddToGroupAsync(Context.ConnectionId, $"user-{currentUserId}"); await base.OnConnectedAsync(); }

Luego, cuando necesite enviar un mensaje a esa persona, puede transmitirlo a su grupo 'personal'. (Una persona puede tener varias conexiones, por lo que el enfoque grupal funciona perfectamente para nosotros).

P.EJ:

 Clients.Group($"user-{userId}").SendAsync("UserSpecificMessage", message);

Cuando los usuarios se desconecten, SignalR manejará la eliminación de conexiones de los grupos automáticamente.

Al usar este enfoque, no tenemos que transmitir innecesariamente un mensaje a cada cliente con la intención de que solo un cliente filtre el mensaje en función de la identificación.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda