2013-05-28 21 views
5

Avevo un sito Web, che è stato codificato interamente in PHP e jQuery Basic Ajax. Comunque dopo aver saputo di node.js/socket.io ho ricodificato quasi tutte le cose in tempo reale che riguardavano ajax usando nodejs e socket.io. Sono un po 'confuso se ho fatto la cosa giusta. Quindi la mia domanda è quando ajax è una soluzione più ottimale rispetto all'utilizzo di nodo/socket?Quando usare node.js e quando usare ajax?

+6

Questo è come chiedere se è più ottimale usare il tappeto per la chirurgia o lo spazzolino per la pallavolo. Devi avere la terminologia giusta. –

risposta

8

In primo luogo, dovresti conoscere la differenza tra i due, la risposta diventerà chiara.

AJAX vengono utilizzati per semplici richieste asincrone. Non richiedono la configurazione di un server Node e sono supportati su quasi tutti i browser. Vengono utilizzati quando è necessario recuperare informazioni dal server. Tuttavia, hanno il sovraccarico di essere inviati su HTTP e quindi devono essere una richiesta/risposta HTTP appropriata (aggiunge peso).

WebSockets (disponibile in un'impostazione Node.js/socket.io) vengono utilizzati quando si accede a determinati dati frequentemente o è necessario disporre di una connessione permanente e permanente con il server. È possibile stabilire una connessione socket e inviare pacchetti dal server al client. Questo è leggero rispetto a una soluzione AJAX, tuttavia Websockets non è supportato dai browser più vecchi e occorre configurare un server che gestirà tali richieste.

Socket.IO in particolare utilizza una raccolta di tecniche diverse in modo da ottenere un supporto browser migliore: polling lungo, streaming multipart, ecc. Ciò consente di avere un feedback "istantaneo" dal server, tuttavia è ancora in la maggior parte dei casi utilizza HTTP come protocollo. Tuttavia, utilizzerà WebSockets se disponibili (ovvero supportati dal browser).

In alcuni casi Node.js/Socket.io utilizzerà AJAX.

Se non si sta lavorando a un gioco online o se non è necessario aggiornare frequentemente lo stato della propria applicazione, suggerirei di utilizzare AJAX invece di un'installazione Node.js/socket.io.

+1

+1 buona spiegazione. Spero che tu possa espanderlo un po 'di più – samayo

+1

ma con ogni connessione la mia app fa con il server apache assegna singoli thread a ciascuno di essi, consumando così un sacco di risorse, e al momento ho impostato sia apache/nodejs. Voglio dire se uso Ajax per aggiornare il mio newsfeed ogni 20 secondi o popolare i popup, non occuperà un sacco di risorse ?? – AnuragD

+1

Quello che hai descritto nel 2 ° paragrafo è WebSockets, non SocketIO.SocketIO fornisce supporto per * web socket * like, utilizzando qualunque supporto sia supportato dal browser corrente; sia esso websocket, iframe, polling lungo o persino flash. – Matt

3

Nodejs è ideale per le applicazioni in cui è necessario mantenere una connessione permanente tra il client e il server. Fondamentalmente se si desidera inviare dati in tempo reale (client di chat, giochi, ecc.) Tra il client e il server nodejs è una grande opzione.

Con nodejs questo tipo di connessione persistente non bloccherà altre richieste. Molte altre lingue come php (dove ogni connessione avvia un nuovo processo del server) sono difficili in tali situazioni e probabilmente finirai con un carico enorme sulla CPU.

Socket.io e node.js insieme sono un'opzione ancora migliore se i dati in tempo reale con la latenza più bassa possibile sono l'obiettivo. Ritornerà al polling lungo quando altre tecnologie non sono supportate, la sua preferenza è quella di utilizzare socket web.

Ovviamente sia Apache (con php) che nodejs possono fare AJAX, la domanda dovrebbe essere davvero se questo sia il modo giusto per trasferire i dati, abbiamo bisogno di sapere di più su ciò che stai cercando di ottenere!