Si un usuario actualiza la página, se trata como una nueva conexión. Tiene razón en que la desconexión se basa en un tiempo de espera.
Puede controlar los eventos Conectar/Volver a conectar y Desconectar en un concentrador implementando
SignalR.Hubs.IConnected
y
SignalR.Hubs.IDisconnect
.
Lo anterior se refiere a SignalR 0.5.x.
De the official documentation (actualmente para v1.1.3):
public class ContosoChatHub : Hub
{
public override Task OnConnected()
{
// Add your own code here.
// For example: in a chat application, record the association between
// the current connection ID and user name, and mark the user as online.
// After the code in this method completes, the client is informed that
// the connection is established; for example, in a JavaScript client,
// the start().done callback is executed.
return base.OnConnected();
}
public override Task OnDisconnected()
{
// Add your own code here.
// For example: in a chat application, mark the user as offline,
// delete the association between the current connection id and user name.
return base.OnDisconnected();
}
public override Task OnReconnected()
{
// Add your own code here.
// For example: in a chat application, you might have marked the
// user as offline after a period of inactivity; in that case
// mark the user as online again.
return base.OnReconnected();
}
}