2013-12-08 3 views
3

Если пользователь переходит на другой сайт, отличный от моего, или нажимает кнопку X, чтобы полностью закрыть браузер, будет ли OnDisconnected по-прежнему вызываться через некоторое время?Будет ли SignalR вызывать OnDisconnected, если пользователь покинет сайт

Причина, о которой я прошу, заключается в том, что мне нужно обновить базу данных, когда пользователь ушел, чтобы он не показывал пользователя, как все еще в комнате.

- Будет ли вызываться функция ниже после периода неактивности, даже если пользователь полностью закрыл браузер?

public override async Task OnDisconnected() 
{ 
    if (!string.IsNullOrEmpty(this.Context.QueryString["acroomid"])) 
    { 
     string roomid = this.Context.QueryString["acroomid"], 
       uid = this.Context.QueryString["uid"], 
       isPro = this.Context.QueryString["isPro"]; 

     await Groups.Remove(Context.ConnectionId, roomid); 

     ChatManager.LeaveChatRoom(uint.Parse(roomid), new Guid(Membership.GetUser().ProviderUserKey.ToString())); 
     Clients.Group(roomid).gone(new Attendee(Context.ConnectionId, Membership.GetUser().UserName, bool.Parse(isPro))); 
    }; 
} 

ответ

0

Согласно этой статье здесь: http://www.asp.net/signalr/overview/signalr-20/hubs-api/handling-connection-lifetime-events

Сервер будет ждать, пока время ожидания отключения не истекло, а затем огонь OnDisconnected событие. Предоставленный сценарий заключается в том, что клиентская машина выходит из строя или переходит в спящий режим, поэтому пользователь, закрывающий браузер, будет тем же самым результатом.

Смежные вопросы