2016-07-07 17 views
5

Sto lavorando con alcuni esempi di codice per l'API Diffusion JS ma non capisco l'esempio sulla riconnessione. Quali sono i parametri e abort di reconnectionStrategy?Argomenti non spiegati passati alla riconnessione del client 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) { 

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

+0

In ogni modo è possibile rendere riconnessioneStrategy uguale alla funzione restituita. Potrebbe aver precedentemente incluso le sue variabili locali che spiegherebbero perché è così com'è. –

risposta

5

Questi due argomenti sono descritti come reconnect e abortin the manual, entrambi sono funzioni che possono essere messe a frutto.

  • start/reconnect - avvierà un tentativo di riconnessione. Indica al cliente di tentare un'altra connessione.

  • abort - può essere chiamato per interrompere la riconnessione, nel qual caso il cliente sarà chiuso. Chiamalo se ritieni che ulteriori tentativi saranno infruttuosi o altrimenti indesiderabili.

Con questa comprensione vediamo che l'esempio si tenta riconnessione tra attende che aumenta esponenzialmente (100ms, 200ms, 400ms, etc.) fino ad un massimo di 60s. Se il tentativo di riconnessione fallisce, viene richiamata la funzione di strategia di riconnessione.

4

La funzione, inoltre, non ha bisogno di essere avvolto:

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

farebbero altrettanto bene e meno confusione.