2013-06-24 17 views
12

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

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
+0

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? –

+0

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. –

+0

@PeterLyons Quindi, se sto creando un sistema di notifica, le prese sul web sono le migliori, giusto? –

Problemi correlati