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?
risposta
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 buona spiegazione. Spero che tu possa espanderlo un po 'di più – samayo
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
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
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!
- 1. Quando utilizzare socket.io e quando usare ajax
- 2. quando usare Task e quando usare Thread?
- 3. Quando usare undef_method e quando usare remove_method?
- 4. Quando usare viewDidLoad e quando usare awakeFromNib
- 5. Quando usare set -e
- 6. Quando usare richiede e quando usare l'importazione in Aurelia?
- 7. C# Quando dovrei usare List e quando dovrei usare l'arraylist?
- 8. Quando dovrei usare require() e quando usare define()?
- 9. Quando usare Requirejs e quando usare javascript in bundle?
- 10. Quando usare LEFT JOIN e quando usare INNER JOIN?
- 11. Quando usare dup e quando usare clone in Ruby?
- 12. Quando usare .mdf e quando .sdf?
- 13. Quando usare "se" e "quando" in Clojure?
- 14. Quando dovrei usare setUpClass e quando __init__?
- 15. Quando usare @Embedded e @Embeddable?
- 16. Perché e quando usare __noop?
- 17. Quando usare Guava sameThreadExecutor
- 18. Quando usare Request.RegisterForDispose?
- 19. Quando usare QueueUserAPC()?
- 20. Quando usare reinterpret_cast?
- 21. Quando dovrei usare AQL?
- 22. Quando non usare ACS?
- 23. Quando usare Dipendenza iniezione
- 24. Quando usare StringBuilder?
- 25. CompositeWPF: EventAggregator - quando usare?
- 26. Quando dovrei usare CompiledQuery?
- 27. Come usare e quando è utile usare memmove in C?
- 28. Quando usare SwingUtilies.invokeAndWait/invokeLater
- 29. Polimero: quando usare async?
- 30. Quando usare NodeIterator
Questo è come chiedere se è più ottimale usare il tappeto per la chirurgia o lo spazzolino per la pallavolo. Devi avere la terminologia giusta. –