2016-07-07 16 views
5

Pracuję nad przykładami kodu interfejsu API JF Diffusion, ale nie rozumiem przykładu ponownego połączenia. Jakie są parametry reonnectionStrategy?Niewyjaśnione argumenty przekazane do ponownego połączenia z klientem JSStrategia

// Create a reconnection strategy that applies an exponential back-off 
var reconnectionStrategy = (function() { 
    return function(start, abort) { 
     var wait = Math.min(Math.pow(2, attempts++) * 100, maximumAttemptInterval); 

     // Wait and then try to start the reconnection attempt 
     setTimeout(start, wait); 
    }; 
})(); 

// Connect to the server. 
diffusion.connect({ 
    host : 'diffusion.example.com', 
    port : 443, 
    secure : true, 
    principal : 'control', 
    credentials : 'password', 
    reconnect : { 
     timeout : maximumTimeoutDuration, 
     strategy : reconnectionStrategy 
    } 
}).then(function(session) { 

Zrobione z https://github.com/pushtechnology/diffusion-examples/blob/master/js/examples/reconnect.js

+0

Nawiasem mówiąc, możesz przywrócić połączenie Srategy równe funkcji, która jest zwracana. Być może wcześniej zawierał własne zmienne lokalne, które wyjaśniałyby, dlaczego tak właśnie jest. –

Odpowiedz

5

Te dwa argumenty są opisane jako reconnect i abortin the manual, oba są funkcje, które mogą być wykorzystane.

  • start/reconnect - zainicjuje próbę ponownego połączenia. Poleca klientowi, aby spróbował innego połączenia.

  • abort - może zostać wywołany w celu przerwania ponownego połączenia, w którym to przypadku klient zostanie zamknięty. Nazwij to, jeśli uważasz, że dalsze próby będą bezowocne lub w inny sposób niepożądane.

Z tego zrozumienia widzimy, że przykład próby ponownego połączenia między czeka, że ​​zwiększa się wykładniczo (100ms, 200ms, 400ms, itd.) Do maksymalnie 60 lat. Jeśli próba ponownego połączenia nie powiedzie się, funkcja strategii ponownego łączenia zostanie ponownie wywołana.

4

funkcja również nie musi być owinięty:

var reconnectionStrategy = function(start, abort) { 
    var wait = Math.min(Math.pow(2, attempts++) * 100, maximumAttemptInterval); 

    // Wait and then try to start the reconnection attempt 
    setTimeout(start, wait);}; 

zrobi tak samo dobrze i być mniej kłopotliwe.

Powiązane problemy