Добавить переопределен метод в ваш Hub
класс:
public override Task OnDisconnected(bool stopCalled)
{
// do the logging here
Trace.WriteLine(Context.ConnectionId + ' - disconnected');
return base.OnDisconnected(stopCalled);
}
Это будет обрабатывать и регистрировать disconects на стороне сервера, в то время как я думаю, что это не имеет особого смысла, чтобы отслеживать его на client
стороне, как это маловероятно, что ваш SignalR сеанс будет прекращен со стороны сервера - see here.
Редактировать в отношении @stuartd
комментарий: вы также можете переопределить
public override Task OnReconnected()
{
Trace.WriteLine(Context.ConnectionId + ' - reconnected');
return base.OnReconnected();
}
так что вы будете иметь возможность отслеживать случаи, когда клиент пытался подключиться к серверу и добиться успеха.
Edit # 2: Тогда вы, конечно, можете использовать тот же механизм для отслеживания из OnConnected
события
public override Task OnConnected()
{
Trace.WriteLine(Context.ConnectionId + ' - reconnected');
return base.OnConnected();
}
Так что все кода отслеживания удобно хранится только на стороне сервера, который является более устойчивым в тех случаях, когда клиент вошел в концентратор, но по какой-то причине не смог выполнить метод, который вы используете для отслеживания зарегистрированного состояния.
$ .connection.hub.disconnected (function() {... 'на клиенте и/или переопределять' OnDisconnected (bool stopCalled) {'в хабе – stuartd
@stuartd Я, похоже, не могу позвонить hub.disconnected (функция() { hub.server.goodbye ("bye"); }); не работает – frc
Ну, это не работает, так как ** клиент отключен ** – stuartd