2013-08-07 23 views
9

Mi sono imbattuto in questi examples mostrando polling vs polling lungo in javascript, tuttavia non capisco come siano diversi l'uno dall'altro. Soprattutto per quanto riguarda l'esempio di polling lungo, come mantiene aperta la sua connessione?polling vs polling lungo

Questo è ciò che lo scenario di polling tradizionale assomiglia:

(function poll(){ 
    setTimeout(function(){ 
    $.ajax({ url: "server", success: function(data){ 
     //Update your dashboard gauge 
     salesGauge.setValue(data.value); 

     //Setup the next poll recursively 
     poll(); 
    }, dataType: "json"}); 
    }, 30000); 
})(); 

e questo è il lungo esempio di polling:

(function poll(){ 
    $.ajax({ url: "server", success: function(data){ 
    //Update your dashboard gauge 
    salesGauge.setValue(data.value); 

    }, dataType: "json", complete: poll, timeout: 30000 }); 
})(); 

Grazie!

risposta

12

La differenza è la seguente: il polling lungo consente una notifica di tipo event-driven, quindi il server è in grado di inviare attivamente i dati al client. Il polling normale è un controllo periodico dei dati da recuperare, per così dire. Wikipedia è abbastanza dettagliata a riguardo:

Con il polling lungo, il client richiede le informazioni dal server in modo simile a un normale polling; tuttavia, se il server non ha alcuna informazione disponibile per il client, invece di inviare una risposta vuota, il server conserva la richiesta e attende che le informazioni siano disponibili (o per un evento di timeout adatto), dopo di che viene fornita una risposta completa finalmente inviato al cliente.

Il polling lungo riduce la quantità di dati che devono essere inviati perché il server invia solo dati quando ci sono realmente dati, quindi il client non ha bisogno di controllare ad ogni intervallo x.

Se è necessario un modo più performante (e più elegante) di comunicazione client/server full duplex, prendere in considerazione l'utilizzo del protocollo WebSocket, è fantastico!

+1

Il cliente può dire la differenza tra il polling lungo e una risposta lenta? Mi sembra che sondaggi e sondaggi lunghi siano fondamentalmente la stessa cosa. Polling: "Client: è ancora pronto? Server: No". Polling lungo: "Cliente: è ancora pronto? Server: ... No". – DavidS

+0

@Davids: ecco la differenza: con il polling, il client chiede e ottiene una risposta immediata "sì/o". Con il polling lungo, il client chiede ma * non * ottiene una risposta immediata. Il server non risponde alla domanda fino a quando * non * è qualcosa che può rispondere. Quindi la domanda è in sospeso tutto il tempo. – Robert

+0

@Robert Cosa succede se c'è un evento di timeout e il server non è in grado di inviare dati nel polling lungo? Il cliente deve inviare nuovamente la stessa richiesta? –

2

Il polling è fondamentalmente il processo di controllo periodico del server per informazioni dopo aver effettuato una richiesta da parte del client. Se le informazioni richieste sono disponibili, saranno inviate al client sotto forma di risposta, altrimenti il ​​server invierà una risposta vuota. Il polling viene eseguito con l'aiuto di funzioni come setInterval() e setTimeout().

In caso di polling lungo, il client effettua una richiesta al server e se la risposta è disponibile, il server risponde con le informazioni in caso contrario, tenere la richiesta fino le informazioni richieste non sono disponibili. A differenza del polling tradizionale in cui il server avrebbe risposto con una risposta vuota.

Problemi correlati