2015-01-22 18 views
6

Sto provando a connettermi al server utilizzando un oggetto XMLHttpRequest per inviare dati in momenti diversi. Creo un oggetto e "collegare" al server in questo modo:L'oggetto XMLHttpRequest si chiude dopo la risposta ricevuta?

var xhr = new XMLHttpRequest(); 
xhr.open("post", location, true); 
xhr.send(); //Is this send call needed to open the connection? 

E in un secondo momento, che io chiamo qualcosa di simile:

xhr.send("Something to send"); 

Tuttavia, guardando la console sviluppatore, sembra che solo la richiesta iniziale sia passata (e abbia risposto con successo). La seconda richiesta non sembra inviare. Sto cercando di restringere quale potrebbe essere il problema, quindi ho pensato: la connessione potrebbe essere chiusa una volta ricevuta la risposta; Perché dovrebbe essere tenuto aperto? Quindi, la mia domanda: la connessione dell'oggetto XMLHttpRequest è chiusa una volta ricevuta una risposta? In tal caso, qual è il modo migliore per simulare una connessione continuamente aperta (per riconnettersi costantemente?)?

+1

È necessario creare un nuovo oggetto richiesta per un'altra richiesta. Non dovresti chiamare 'send' più volte sullo stesso oggetto. – Bergi

+0

@Bergi Non sarebbe più pratico richiamare semplicemente il metodo aperto sull'oggetto? O non funzionerà? – chRyNaN

+0

Non vedo come sarebbe "più pratico". Cosa pensi di aver ottenuto [riutilizzando l'oggetto] (http://stackoverflow.com/q/11079543/1048572)? IIRC, alcuni vecchi browser avevano alcuni bug con quello. – Bergi

risposta

4

Sì, se non si è ingannato il server per tenerlo in vita, verrà chiuso dopo l'invio della risposta.

Forse si desidera cercare le prese. Ma se non vuoi giocare con quelli, crea una nuova HttpRequest per ciascuna delle tue "richieste".

Comunicazione di base con HTTP: 1 richiesta -> 1 risposta -> chiusa!

Modifica: tenere presente che Websockets è una nuova funzionalità di HTML5, pertanto non funzionerà per tutti i browser e, se funzionano per alcuni browser, potrebbero non essere completamente implementati.

+0

Sì, sono a conoscenza delle websocket. Ma tornando a XMLHttpRequest, non potrei semplicemente riutilizzare lo stesso oggetto semplicemente chiamando di nuovo aperto su quell'oggetto, o non funzionerà? – chRyNaN

+0

No, devi ricreare un 'XLMHttpRequest' per ogni" richiesta "che vuoi fare. –

Problemi correlati