2009-09-26 11 views
8

Da this articolo su Wikipedia:HTTP connessione persistente vs connessione socket TCP

messaggi Keepalive non fosse ufficialmente supportato in HTTP 1.0. In HTTP 1.1 tutte le connessioni sono considerate persistenti, salvo diversa indicazione.

  • Questo significa che utilizzando questo meccanismo posso effettivamente simulare una connessione socket TCP ?
  • Utilizzando ciò, posso rendere un server " " push "dati a un client?
  • Sono tutte le connessioni HTTP, anche la quella che sto usando per connettersi allo Stack Overflow "HTTP persistente"?
  • La tecnologia COMET del server server utilizza questo meccanismo di connessione persistente HTTP per inviare dati ai client?
+1

HTTP connessioni persistenti sono solo un'ottimizzazione. Non c'è alcuna differenza di comportamento. Se si desidera trasmettere i dati al client, è possibile utilizzare la codifica Chunked, credo. – derobert

+1

@derobert: cos'è la codifica Chunked? –

risposta

8
  • Questo significa che utilizzando questo meccanismo posso effettivamente simulare una connessione socket TCP ?

Non proprio, prese hanno MOLTI più funzionalità e flessibilità.

  • Utilizzando questo posso fare un server di dati "push" ad un cliente?

Non direttamente, è ancora un/protocollo di risposta richiesta; la connessione persistente significa semplicemente che il client può utilizzare lo stesso socket sottostante per inviare più richieste e ricevere le rispettive risposte.

  • sono tutte le connessioni HTTP, anche quello che sto usando per connettersi a Stack Overflow "HTTP persistente"?

meno che il vostro browser (o un server singolare) dice altrimenti, sì.

  • Condivide la tecnologia di COMET push server di utilizzare questo meccanismo di HTTP connessione persistente di spingere i dati a clienti?

Kinda (per lo streaming, almeno), ma con un sacco di panna montata sulla parte superiore. Esistono altri approcci all'implementazione di Comet, come iframe nascosti e AJAX long polling, che potrebbero non richiedere connessioni persistenti (che forniscono di alcuni firewall & c che si adatta comunque ;-).

+0

Si dice "le prese hanno molte più funzioni e flessibilità". Quali sono queste caratteristiche rispetto alla connessione persistente HTTP e quale flessibilità offrono? –

+2

socket TCP impongono restrizioni su che parla quando e come - entrambe le parti possono inviare byte in qualsiasi momento, senza aspettare che l'altro ("full duplex"), il flusso non è intrinsecamente chunked fino in messaggi di lunghezza definita, & c. Avete bisogno di un protocollo di livello superiore in alto per dare un po 'della flessibilità e girare il caos per ordinare: HTTP è solo uno di questi protocolli, una asimmetrica half-duplex protocollo di richiesta/risposta con messaggi di lunghezza ben definita (header Content-Length o chunking). Il cliente può accodare le richieste una dopo l'altra, il server deve rispondere a ciascuna richiesta. –