2016-07-07 3 views
5

Ich arbeite durch einige Codebeispiele für die Diffusion JS-API, aber ich verstehe das Beispiel bei der Wiederverbindung nicht. Was sind die Parameter start und abort der reconnectionStrategy?Unerklärliche Argumente an JS-Client übergeben reconnectionStrategy

// 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) { 

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

+0

Übrigens könnten Sie reconnectionStrategy gleich der Funktion, die zurückgegeben wird. Möglicherweise hat es zuvor eigene lokale Variablen enthalten, die erklären könnten, warum es so ist. –

Antwort

5

Diese beiden Argumente als reconnect und abortin the manual beschrieben sind, sind beide Funktionen, die in Gebrauch genommen werden kann.

  • start/reconnect - einen Reconnect Versuch starten. Weist den Client an, eine andere Verbindung zu versuchen.

  • abort - kann zum Abbrechen der Wiederverbindung aufgerufen werden. In diesem Fall wird der Client geschlossen. Nennen Sie das, wenn Sie glauben, dass weitere Versuche fruchtlos oder anderweitig unerwünscht sind.

Mit diesem Verständnis, das wir sehen, dass das Beispiel versucht, erneute Verbindung zwischen wartet die exponentiell (100ms, 200ms, 400ms, etc.) bis zu einem Maximum von 60s erhöht. Wenn der Wiederverbindungsversuch fehlschlägt, wird die Wiederverbindungsstrategiefunktion erneut aufgerufen.

4

Die Funktion muss auch nicht umgebrochen werden:

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);}; 

auch nur tun würde und weniger verwirrend.