Puede implementar IConnected/IDisconnect en el concentrador y realizar un seguimiento de clientes manualmente, por ejemplo, en una base de datos, y luego retirar la lista cuando sea necesario. El siguiente ejemplo es de la SignalR Wiki
public class Status : Hub, IDisconnect, IConnected
{
public Task Disconnect()
{
return Clients.leave(Context.ConnectionId, DateTime.Now.ToString());
}
public Task Connect()
{
return Clients.joined(Context.ConnectionId, DateTime.Now.ToString());
}
public Task Reconnect(IEnumerable<string> groups)
{
return Clients.rejoined(Context.ConnectionId, DateTime.Now.ToString());
}
}
No todo el mundo crea servidores de chat. Creo que implícita era cómo obtener ConnectionId utilizado por el cliente actual para enviar un mensaje a ese usuario/sesión. Me pregunto cómo hacer esto mejor en una Acción MVC desde un cliente en el que deseo enviar mensajes de progreso. Hay algunas técnicas para el almacenamiento en caché de ConnectionIds por el nombre de usuario, pero no he visto nada decente para permitir que el mismo usuario tenga múltiples conexiones, lo que a menudo es el caso con las aplicaciones web. Ideas para eso? Gracias. – Dave
Lo envía desde el cliente a su acción de mvc. Está disponible en el cliente a través de $ .connection.hub.id. – davidfowl