2015-12-15 2 views
0

У меня есть угловое приложение с использованием SignalR. Когда пользователь аутентифицирован, я инициализирую подключение к серверу. Я считаю, что если клиент неактивен через определенное время, он отключится. С приведенным ниже кодом, как бы я снова подключиться, если он отключится от бездействия?Как обновить соединение SignalR, если таймауты подключения от неактивности

var initializeSockets = function(){ 
    self.proxy = null; 
    var connection = $.hubConnection(ENV.socketEndpoint,{ 
     qs: {token:User.getToken()}, 
     logging: false, 
     useDefaultPath: false 
    }); 
    self.proxy = connection.createHubProxy('messageCreatedEmitter'); 
    self.proxy.on('onMessageCreated',function(data){ 
    //the following is wrapped in a try catch 
    //because it will break in a browser, and 
    //will not allow the message to be emitted 
    try { 
     Alert.messageReceived(); 
    } catch (e) { 
    } 
    $rootScope.$emit('Messages:messageReceived',data); 
    }) 

    if($.connection.hub && $.connection.hub.state === $.signalR.connectionState.disconnected 
    || $.connection.hub.state === undefined){ 
    connection.start().done(function(){ 
     $log.info('connected'); 
    }) 
    } 
} 

$rootScope.$on('User:userAuthenticated',function(event,user){ 
    initializeSockets(); 
}) 
+0

Вы уверены, что он отключен от неактивности, а не автоматически переподключается? – Tracker1

+0

Ну, я знаю, что это так, но я предположил, что через некоторое время бездействия он отключится. Я ошибаюсь? – TheJediCowboy

+0

Я не уверен, я знаю, что SignalR имеет довольно сильную систему резервного/повторного подключения ... вы можете отправить сообщение «ping» каждые пару минут, чтобы убедиться, что узел жив. Если вы не захотите * отключиться после бездействия. – Tracker1

ответ

1

Вы можете следить за отключением и повторным подключением;

$.connection.yourHubName.client.disconnect(function() { 
    $.connection.hub.start(); 
}); 
+0

Я пробовал это раньше, но он говорит мне, что '$ .connection.hub.disconnect (...)' не является функцией – TheJediCowboy

+0

@TheJediCowboy fixed –

+0

@TheJediCowboy -Вы можете использовать $ .connection.hub.disconnected (.. .) ссылайтесь на это: https: //www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client –

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

  • Нет связанных вопросов^_^