Al livello TCP/IP sembra uguale: una presa è aperta.
Ma dal punto di vista del browser sono completamente diversi. Il keep-alive è per il browser da riutilizzare per richiedere più contenuti (ad esempio immagini, file CSS, pagina successiva sul sito). WebSockets è per la comunicazione bidirezionale da all'interno del codice dell'applicazione Javascript. Il server può scegliere di inviare contenuti in qualsiasi momento. La tua applicazione JS può inviare dati al server in qualsiasi momento.
Vale anche la pena confrontarlo con SSE (aka EventSource), che consente anche al server di scegliere di inviare contenuto in qualsiasi momento, ma è a senso unico (l'applicazione JS deve ricorrere all'utilizzo di XHR quando è necessario inviare più dati). (Un confronto completo di WebSockets e SSE può diventare molto complesso, quindi non dirò altro qui, tranne per dire che SSE può spesso essere la scelta corretta.)
Confronto anche con Server Push in HTTP/2 (alias SPDY). Questo è per il server per spingere proattivamente i file (immagini, file css, pagina successiva sul sito), ma è di nuovo al livello del browser, non controllato da Javascript.
fonte
2013-07-12 06:22:40
Collegamenti che mi hanno aiutato: http://stackoverflow.com/questions/10028770/html5-websocket-vs-long-polling-vs-ajax ------- http://stackoverflow.com/questions/ 11077857/what-are-long-polling-websockets-server-send-events-sse-and-comet –
"Ad esempio in node.js è possibile condividere la stessa memoria per diverse connessioni socket, in modo che possano accedere a variabili condivise. Quindi non è necessario utilizzare il database come punto di scambio nel mezzo (come con AJAX o Long Polling e, ad esempio, PHP). È possibile memorizzare i dati nella RAM, o anche ripubblicare tra le prese immediatamente. " –
http://stackoverflow.com/questions/10028770/html5-websocket-vs-long-polling-vs-ajax –