2013-04-29 13 views
10

Sto utilizzando SocketIO su NodeJS e non mi interessa molto il supporto di browser estesi perché è il mio progetto domestico in cui voglio utilizzare tutta la potenza delle nuove tecnologie per facilitare lo sviluppo. La mia preoccupazione riguarda il modo in cui dovrei inviare grandi quantità di dati JSON dal server al client e viceversa. Bene, questi importi non sono grandi come potrebbero essere per i dati binari di immagini o video, suppongo che non superino le centinaia di kilobyte per richiesta.WebSockets vs XHR per grandi quantità di dati

due scenari che vedo sono:

  1. inviare una notifica tramite WebSockets dal server al client che alcuni dati devono essere recuperati. Quindi il codice client esegue una richiesta XHR regolare al server e ottiene alcuni dati tramite XHR.
  2. Invia l'intero set di dati su WebSockets da server a client. In questo caso non ho bisogno di eseguire richieste aggiuntive - Ho appena ricevuto tutti i dati tramite WebSockets.

Ho visto il primo caso in Meteor.js, quindi mi sono chiesto le ragioni di ciò. Si prega di condividere la vostra opinione.

+2

forse questo aiuta http://stackoverflow.com/questions/13010354/chunking-websocket-transmission – jAndy

risposta

5

WebSockets dovrebbero supportare insiemi di dati di grandi dimensioni (fino a 16 exabyte in teoria), quindi da questo punto di vista dovrebbe funzionare bene. Il vantaggio di XHR è che sarete in grado di osservare i progressi nel tempo e, in generale, meglio testati per blocchi di dati di grandi dimensioni. Ad esempio, ho visto implementazioni di server Websocket che (pensando in modo retrospettivo) non gestiscono bene i dati di grandi dimensioni, perché caricheranno l'intero dato in memoria (anziché lo streaming dei dati), ma naturalmente non è necessariamente il caso del socket. io (non lo so). Punto nel caso: provalo con socket.io mentre osservi l'utilizzo e la stabilità della memoria. Se funziona, sicuramente andare con websockets, perché a lungo termine il supporto per i pacchetti di big data non potrà che migliorare e sicuramente non peggiorare. Se risulta instabile o se socket.io non è in grado di eseguire lo streaming di file di dati di dimensioni maggiori, utilizzare il costrutto XHR.

Btw, solo una ricerca su google trovata su siofile, non l'ho esaminata più di tanto, ma potrebbe essere proprio la cosa che ti serve.

+0

Grazie. Per quello che vale, spero che questo sia accurato. – zallarak

+0

Dovresti provare ad entrare in contatto con Sergey sia che esegua alcune misure/prove, se lo facesse sarebbe un'informazione preziosa ;-) Tutto quello che potrei condividere è la teoria e un progetto github pertinente. –

Problemi correlati