Svilupperò un framework per la programmazione delle comete e non posso utilizzare Web Sockets o Server-Sent Events (perché il supporto del browser fa davvero schifo). Quindi, ho bisogno di mantenere la connessione HTTP attiva e di inviare i dati chunked al client.Qual è la magia dietro Lightstreamer?
Tuttavia, i problemi si mostrano come si ottiene nel lavoro:
- Utilizzando XMLHttpRequest non è possibile, a causa del fatto che IE non ti dà
xhr.responseText
mentre ilxhr.readyState
è 3. - A nascosto
iframe
non può essere utile, perché il browser mostra il caricatore mentre invio i dati al client. - Ho provato a inviare un file JavaScript al client, inviando ogni volta i comandi di esecuzione della funzione, ma i browser non eseguiranno JavaScript finché non sarà completamente caricato.
Tuttavia, quando guardo Lightstreamer demo page, vedo che invia un file JavaScript al client poco a poco e in ogni passaggio, invia una chiamata alla funzione e semplicemente viene eseguito quella funzione (posso fare questa parte). Sembra che Lightstreamer usi AJAX, dal momento che la richiesta viene semplicemente visualizzata nella scheda della console di Firebug, ma funziona anche come un fascino in IE.
Ho provato a utilizzare ogni campo di intestazione HTTP che hanno impostato sulla loro richiesta e nessun risultato. Ho anche provato a utilizzare HTTP Post invece di HTTP Get, ma non ho ancora ottenuto alcun risultato.
Ho letto quasi più di 20 articoli su come implementare cometa, ma nessuno of'em appaio per risolvere i problemi che ho:
- Come per renderlo cross-browser?
- Come ricevere una notifica quando arrivano nuovi dati dal server (quale evento dovrei collegare)?
- Come rendere la mia pagina visualizzata come completamente caricata per l'utente (come implementarla, in modo che il browser non mostri l'attività di caricamento)?
Qualcuno può aiutare per favore? Penso che ci dovrebbe essere un piccolo consiglio o trucco che non conosco qui per incollare tutti i concetti insieme. Qualcuno sa cosa fa il lightstreamer per superare questi problemi?
Sì, l'ho provato, ma funziona solo se si imposta il tipo MIME su * text/html *. In altre parole, dovresti richiedere un altro documento HTML. Se si imposta la risposta su ** application/javascript ** o ** application/x-javascript ** o ** text/javascript **, non funzionerà. Inoltre non risolve i miei problemi. Posso usare XMLHttpRequest per richiedere un file HTML contenente snippet JavaScript. Tuttavia, non funziona in IE. Potrei usare 'iframe', ma mostra loader. Lightstreamer funziona ovunque e non mostra il segno del caricatore. –
Si noti inoltre che se utilizzo 'XMLHttpRequest' per ottenere un file HTML sempre carico che contiene l'avviso' 'snippet JavaScript, non verranno eseguiti. Voglio dire, il browser esegue il codice JavaScript all'interno dei tag JavaScript non appena arrivano, ma solo nelle richieste normali, non nelle richieste Ajax. –