Ergebnis 1 bis 7 von 7
-
02-06-2011, 19:12 #1
Grünschnabel
- registriert
- 02-06-2011
- Beiträge
- 8
Mehrere Daten empfangen innerhalb eines AJAX Requests
Hallo Leute,
ich habe folgendes PHP Script:
PHP-Code:<?php
header("Content-Type: text/plain");
echo time( );
flush( );
sleep( 2 );
echo "|" . time( );
flush( );
sleep ( 2 );
echo "|" . time( );
flush( );
?>
Führe ich diese Datei im Firefox ( 3.6.17 ) aus, sendet er mit genau alle 2 Sekunden einen Timestamp.
Führe ich diese Datei via AJAX aus, sendet er mit leider alle auf einmal. Ich habe irgendwo einen Denkfehler drinne, vermutlich irgendwas blödes.
Hier die ersteinmal die Logausgaben:
Code:[1307034283.263] 1: [1307034287.299] 2: [1307034287.003] 3: 1307034283|1307034285|1307034287 [1307034287.304] 4: 1307034283|1307034285|1307034287
* Vor dem Doppelpunkt steht der readyState des Requests
Man sieht, State 1 wartet 6 Sekunden, bevor State 2 eintritt. Und in State 3 und 4 sendet er mir alle Informationen auf einmal.
Hier mein Ajax Request aufs Mindeste beschränkt:
Code:var xmlhttp = this.open( ); //generiert das xmlhttprequest object xmlhttp.open( "GET", this.url, true ); xmlhttp.onreadystatechange = function( ) { //log message senden trace( xmlhttp.readyState + ': ' + xmlhttp.responseText ); }; xmlhttp.send( );
Vielen Dank für eure Hilfe.
-
02-06-2011, 19:28 #2
AW: Mehrere Daten empfangen innerhalb eines AJAX Requests
Ja, das Design ist falsch. Du darfst nicht serverseitig pushen sondern musst clientseitig requesten. mit setTimeout einen sekündlichen Request machen und der Server sendet dann immer nur, was bis dahin anfällt. Also nicht serverseitig pausieren sondern clientseitig. Liegt daran, dass der Webserver den Kanal offen hält bis alles übertragen ist.
-
02-06-2011, 23:35 #3
Grünschnabel
- registriert
- 02-06-2011
- Beiträge
- 8
AW: Mehrere Daten empfangen innerhalb eines AJAX Requests
Ah ok, vielen Dank.
Leuchtet ein.
Ich kann auch vermutlich nicht umgehen, dass bei jedem Request des Intervalls, mein PHP Script erneut ausgeführt wird. Ergo brauche serverseitig auch ein anderes Design, wo mein PHP Script via UNIX Socket oÄ sich die aktuellen Informationen holt und ausgibt.
Oder kann man das vereinfachen?
-
03-06-2011, 06:20 #4
AW: Mehrere Daten empfangen innerhalb eines AJAX Requests
-
03-06-2011, 09:37 #5
Grünschnabel
- registriert
- 02-06-2011
- Beiträge
- 8
AW: Mehrere Daten empfangen innerhalb eines AJAX Requests
Hallo,
also Client-Seitig ist mir klar was ich ändern muss.
Serverseitig eigentlich auch, ich versuche nur, das Best-Of heraus zu finden, um die Codelesbarkeit einfach zu halten. Meine Azubis sollen das auch noch verstehen können.
Folgendes ist das Szenario:
Ich habe eine Platine die mir diverse Motoren in einer Maschine steuert. Die Platine bietet mir den Befehl "detect" um eine Tür zu öffnen, danach die Lichtschranke zu pollen und am Ende die Tür wieder zu schliessen.
Dieser Befehl sendet mir 3 Informationen:
1. Tür öffnet zu Beginn
2. "Object einlegen" wenn er die Lichtschranke pollt
3. Ready wenn Tür wieder geschlossen.
Hier finde ich leicht heraus, wann der Anwender etwas in die Maschine gelegt hat
Nun kam die Anforderung, einen Abbrechen Button auf der GUI zu implemtieren, der sobald der Anwender etwas hereingelegt hat disabled wird.
Meine derzeitige Überlegung ist, dass ich zwei PHP Files benötige:
a) Kommunikation mit der Platine.
Dieses Script schreibt dann die Results und Zwischenresults der Befehle auf einen Stream / Socket.
b) Schnittstelle zum AJAX.
Hier wird nur ausgelesen ob etwas auf dem Stream / Socket steht.
Hat jemand Erfahrung mit so etwas und kann mir ein besseres Design vorschlagen? Oder hab ich hier schon das schönste erwischt?!
Grüßli
-
03-06-2011, 10:56 #6
AW: Mehrere Daten empfangen innerhalb eines AJAX Requests
Vielleicht schaust du dir eine dritte Variante an, das Ajax Longpolling: http://wiki.ajax-community.de/tutori...comet-longpoll
Möglicherweise ist das auch geeignet. Denn soweit ich das sehe wäre es für dich ja hilfreich, alle Aktionen möglichst umgehend im Client zu haben. Und allzu frequentiert ist die Anwendung vermutlich auch nicht.
-
03-06-2011, 11:07 #7
Grünschnabel
- registriert
- 02-06-2011
- Beiträge
- 8
AW: Mehrere Daten empfangen innerhalb eines AJAX Requests
Hehe,
ohne zu wissen wie das heist, habe ich es tatsächlich schon mehrfach verwendet.
Also clientseitig kann ich die Longpolling Variante oder die setTimeout / setInveral Variante verwenden.
Und serverseitig muss ich wohl oder übel ein Streambuffer oder Ähnliches verwenden, damit die Clientanfragen nicht immer das Script neu starten, sondern nur die Daten abrufen.
Dann werdei ch mir mal für den Fall ein neues RPC Design überlegen, da meine jetzigen JSON RPCs das nicht unterstützen.
Vielen Dank für deine Hilfe, schönes WE!
Dennis
Ähnliche Themen
-
Entfernen des Ladestatuses während eines AJAX-Requests
Von Time-Over im Forum JavaScriptAntworten: 8Letzter Beitrag: 25-04-2011, 23:13 -
Daten an SOAP WS senden und empfangen mittels Base64
Von PranKe01 im Forum JavaScriptAntworten: 23Letzter Beitrag: 25-01-2010, 15:21 -
Mehrfache ajax requests
Von larkasu im Forum JavaScriptAntworten: 9Letzter Beitrag: 22-09-2009, 17:33 -
parallele Ajax Requests ?
Von JSer im Forum JavaScriptAntworten: 62Letzter Beitrag: 27-03-2007, 13:00 -
[AJAX] Mehrere Requests nacheinander ausführen
Von fmueller im Forum JavaScriptAntworten: 7Letzter Beitrag: 01-11-2006, 12:06
Lesezeichen