2015-11-20 2 views
1

У меня возникают проблемы с SignalR из-за звонка .start() несколько раз.Стартовый сигнал R много раз

Вот мой JQuery код, который работает:

var signalR = $.connection.chat; 

var signIn = function() { 
    $.connection.hub.start().done(function() { 
     signalR.server.signIn() 
    }) 
}; 

var signOut = function() { 
    $.connection.hub.start().done(function() { 
     signalR.server.signOut() 
    }) 
}; 

var privateChat = function() { 
    $.connection.hub.start().done(function() { 
     signalR.server.privateChat() 
    }) 
}; 

Я нашел решение для улучшения кода:

$.connection.hub.start().done(function() { 
    var signIn = function() { 
     signalR.server.signIn() 
    }; 

    var signOut = function() { 
     signalR.server.signOut() 
    }; 

    var privateChat = function() { 
     signalR.server.privateChat() 
    }; 
}) 

То, что я хочу достичь напрмер $.connection.hub.start().done() только один раз как global (не нужно перезапускать).

Как я могу это сделать?

+0

Я пытаюсь выяснить, что вы хотите ... Ваше второе решение кажется довольно много, кроме того, что ваши 3 метода недоступны за пределами анонимной функции. – thab

ответ

1

Немного непонятно, чего вы хотите достичь. Я думаю, какой-то код отсутствует, чтобы полностью понять ваш вопрос, но это должно работать:

// get chat hub 
var signalR = $.connection.chat; 

$.connection.hub.start().done(function() { 
    // connect hub to server 
    signalR.server.signIn(); 
    signalR.server.signOut(); 
    signalR.server.privateChat(); 
}); 
Смежные вопросы