Ho programmato in nodejs ho visto come utilizzare sia le chiamate socket.io che ajax al server nodo. Socket.io è progettato per sostituire ajax? Sono curioso di sapere in quali casi è meglio usare socket.io e quali ajax sono più belli. Grazie per l'input.Quando utilizzare socket.io e quando usare ajax
12
A
risposta
24
Bene, una delle principali prese di rete (tramite socket.io) prevede che ajax sia privo di server push. Quindi con ajax se vuoi scoprire nuovi eventi sul server (un utente diverso ti ha mandato un messaggio, per esempio), devi eseguire il polling del server, ovvero inviare richieste ajax in un ciclo periodico relativamente frequente. Il più delle volte il server risponde che non c'è nulla di nuovo, ma a volte quando c'è qualcosa di nuovo, il cliente può informarlo.
I socket Web consentono al server di inviare attivamente notifiche al client senza eseguire il polling. Quindi se la tua applicazione ha qualche tipo di informazione che deve essere avviata sul server e deve essere mostrata nel browser, le prese web sono la soluzione migliore.
- Invio dati al server nel modello di richiesta/risposta
- ajax o web prese sostanzialmente equivalenti, tradizionale forma POSTI anche OK
- Invio eventi al server in un modello di flusso di eventi
- socket Web sono i migliori, possono essere emulati tramite ajax alquanto
- Invio di eventi dal server al browser
- I socket Web sono i migliori, possono essere emulati tramite ajax polling lungo, flash, ecc. (Socket.io ha diversi fallback che può provare a utilizzare se non sono disponibili socket Web reali).
- browser meno recenti, alcune piattaforme mobili
- supporto presa web non è lì, quindi l'Ajax è il tuo ripiego
Problemi correlati
- 1. Quando usare node.js 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. Jquery - Quando utilizzare "this" e quando usare "$ (this)"?
- 6. Quando usare set -e
- 7. Quando usare richiede e quando usare l'importazione in Aurelia?
- 8. Quando dovrei usare setUpClass e quando __init__?
- 9. Richieste GET vs POST ajax: quando e come utilizzare?
- 10. Quando usare .mdf e quando .sdf?
- 11. Quando utilizzare JMS e quando utilizzare REST?
- 12. Quando usare LEFT JOIN e quando usare INNER JOIN?
- 13. Quando usare "se" e "quando" in Clojure?
- 14. Quando utilizzare Class.isInstance() e quando utilizzare l'operatore instanceof?
- 15. C# Quando dovrei usare List e quando dovrei usare l'arraylist?
- 16. Quando dovrei usare require() e quando usare define()?
- 17. Quando usare Requirejs e quando usare javascript in bundle?
- 18. Quando usare dup e quando usare clone in Ruby?
- 19. Quando utilizzare le interfacce o classi astratte? Quando usare entrambi?
- 20. Quando utilizzare e quando non utilizzare Python 3.5 `attendere '?
- 21. Quando utilizzare l'array di byte e quando utilizzare lo streaming?
- 22. Quando utilizzare limit e quando non su
- 23. Quando si dovrebbe usare .innerHTML e quando document.write in JavaScript
- 24. Quando usare @Embedded e @Embeddable?
- 25. Perché e quando usare __noop?
- 26. Quando utilizzare Proprietà e metodi?
- 27. Quando utilizzare, non utilizzare, OneToOne e ManyToOne
- 28. quando è intelligente usare bindService e quando startService
- 29. Ajax vs Socket.io
- 30. Elixir: Quando usare .ex e quando .exs file
Grazie per la risposta rapida. Quindi, a meno che non si abbia una buona ragione per fare altrimenti, utilizzare le prese per la comunicazione attiva. Le prese web hanno degli svantaggi? –
Il supporto del browser per i socket Web non è ancora completo come per ajax, specialmente sui dispositivi mobili. Come tutte le nuove tecnologie, gli strumenti e la conoscenza della comunità che li circonda non sono così maturi come lo è per ajax. Inoltre ci possono essere sfide di implementazione con proxy e server Web che richiedono una configurazione specifica prima che funzionino i socket Web. –
@PeterLyons Quindi, se sto creando un sistema di notifica, le prese sul web sono le migliori, giusto? –