我有一個使用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();
})
你確定它是從不活動中斷開而不會自動重新連接嗎? – Tracker1
嗯,我知道這樣做,但我假設在一段時間的不活動之後,它會斷開連接。我錯了嗎? – TheJediCowboy
我不確定,我知道SignalR有一個非常強大的回退/重新連接系統......您可能想每隔幾分鐘發送一次「ping」消息,以確保節點處於活動狀態。 *除非您*希望*在不活動後斷開連接。 – Tracker1