2010-01-28 12 views
8

Sono abbastanza familiare con Ajax e JSON che posso inviare una richiesta e ottenere un'analisi di una richiesta JSON. Idealmente mi piacerebbe ricevere una risposta multipla per aggiornare periodicamente una barra di avanzamento. In questo modo i clienti possono avere un feedback positivo.Come "stream" json da server a client usando javascript

Ho sentito parlare di stream JSON ma non ho trovato una buona risorsa su come implementarlo. Qualcuno sa di una buona risorsa o di come farlo?

risposta

1

JSON è solo un altro formato di dati che vanno oltre il protocollo HTTP (come testo, html, pdf, ecc.). Probabilmente ti stai riferendo a cometd.

Ciò consente di aprire una connessione permanente e di inviare i dati dal server al client (ad esempio lo streaming). Qualsiasi formato è valido per spingere, il cliente deve solo capirlo.

+0

Bene, naturalmente, ma come eseguire lo streaming di singoli frammenti JSON correttamente? –

+0

sì ... la mia risposta non è stata la mia migliore. Ma fondamentalmente la mia esperienza è che qui non c'è uno standard. Il modo in cui l'ho visto è che definisci un delimitatore. Usare una newline funziona abbastanza bene. Di conseguenza, il client "legge" il flusso. Si presume che ogni riga sia un oggetto/carico utile json completo che viene utilizzato. – mlathe

0
<script language="JavaScript"> 
    function doSomething() { 
    // do something here... 
    } 
    setInterval('doSomething()',10000); 
<script> 

Questo chiamerà una funzione ogni 10 secondi. In questo modo è possibile eseguire il polling del server ogni 10 secondi (o 1 secondo) per ottenere una risposta sullo stato di qualsiasi evento si stia tentando di tracciare. Metti semplicemente la tua chiamata AJAX all'interno di quella funzione e invierà.

+0

Questo non è lo streaming. –

+0

Quando questa risposta è stata scritta, 7 anni fa, i WebSocket non erano una cosa e l'unica vera opzione di streaming era Flash. Poiché "Stream" era tra virgolette nella domanda, e la domanda affermava "Idealmente mi piacerebbe ricevere una risposta multipla per aggiornare periodicamente una barra di avanzamento", una soluzione di sondaggio era fattibile, facile da implementare e mancava di dipendenze da software di terze parti . So che non è in streaming, ma la richiesta lo ha usato come verbo e non come requisito tecnico. –

+0

7 anni fa, lo streaming era compiuto da lunghi sondaggi. Ho creato un'applicazione per la chat in streaming - trasmetteva messaggi in arrivo. Quindi, neanche questo 7 anni fa era in streaming. –

0

Prova a guardare nella libreria "cometa". Implementa ciò che è noto come "reverse AJAX". Ti consentirà di inviare facilmente eventi dal server al client.

Anche la proposta di sondaggio fatta prima del mio è perfettamente valida.

1

Ha trovato una tecnica denominata page streaming.

Fondamentalmente si scrivono le voci <script>some js</script> nella connessione permanente e si scaricano nell'interfaccia di rete. Man mano che il browser lo riceve, analizzerà ed eseguirà lo script.

Problemi correlati