È possibile implementare IConnected/IDisconnect sull'Hub e tenere traccia manualmente dei client, ad esempio in un database, quindi richiamare l'elenco quando richiesto. L'esempio che segue è dal 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());
}
}
Non tutti creano server di chat. Penso implicitamente era come ottenere il ConnectionId utilizzato dal client corrente in modo che un messaggio possa essere inviato solo a quell'utente/sessione. Mi chiedo come fare al meglio in un MVC Action da un client in cui voglio inviare messaggi di progresso. Esistono alcune tecniche per la caching di ConnectionIds tramite il nome utente, ma non ho visto nulla di decente per consentire allo stesso utente di avere più connessioni, che è spesso il caso delle app web. Idee per questo? Grazie. – Dave
Lo si invia dal client all'azione mvc. È disponibile sul client tramite $ .connection.hub.id. – davidfowl