ich wollte mal nachfragen wie lange der Browser auf die Antwort vom
Server bei einem HTTP Request wartet?
Gibt es dain den verschiedenen Browsern Einstellungen die einen Timeout
festlegen, gibt es da Defaultwerte oder kann die Antwort auch mal ein
paar Minuten auf sich warten lassen?
Hintergrund:
Ich mᅵchte mit JavaScript eine Pushingmᅵglichkeit. Die sinnvollste
Methode die ich gefunden habe wᅵre einen HTTP Request vom Browser her
aufzubauen und beim Server einfach so lange mit der Antwort zu warten,
bis es neue Informationen fᅵr den Browser gibt. Die neuen Daten dann zum
Browser schicken, verarbeiten und wieder einen neuen Request aufmachen
zum Warten auf die nᅵchste ᅵnderung.
Die Frage wᅵre dann natᅵrlich, geht das auch wenn die Antwort vom Server
mal 5 Minuten braucht, weil sich gerade nichts ᅵndert?
Oder kennt ihr sinnvollere Mᅵglichkeiten mit JavaScript ein Pushing
durchzufᅵhren?
--
Mit freundlichen Grᅵᅵen,
Christoph Herrmann
> Oder kennt ihr sinnvollere Mᅵglichkeiten mit JavaScript ein Pushing
> durchzufᅵhren?
>
Gibt es nicht fᅵr genau sowas XHR, vulgo Ajax? Da "wartest" Du
asynchron, bis der Server schiebt.
Ja die Frage wᅵre aber gibt es ein Limit wie lange ich warten darf?
Nicht dass der Browser 5 Minuten warten mᅵsste bis der Server neue Daten
liefert aber der Request nach 30 Sekunden gekillt wird vom Browser.
Ich kenn das serverseitig bei PHP, da ist bei vielen Anbietern ein Limit
eingebaut, dass jedes Skript nach 30 Sekunden beendet wird. Ich weiᅵ nur
nicht ob die Browser auch solche Limits besitzen.
Genau das meinte der OP ja. Das HR in XHR steht ja fᅵr Http Request (und
da XHR nicht zwangslᅵufig XML impliziert ist es durchaus zulᅵssig, nur
Http-Request zu schreiben). Die Frage war, ob bei Verwendung eines XHR der
Browser den Request nach einer bestimmten Zeit abbricht, falls bis dahin
keine Antwort angekommen ist.
Ich habe keine Antwort auf die Frage. Mir ist kein Timeout bekannt, aber
das heiᅵt ja nichts. Probier's aus.
Matthias
ausprobieren ist so eine Sache bei den vielen Browserversionen und ihre
Eigenarten und Einstellungsmᅵglichkeiten. ;)
Wichtig wᅵre ja nicht nur zu wissen ob es bei einem Browser einen
Timeout gibt, sondern auch welchen Defaultwert dieser hat bzw. ob der
Benutzer einen Einfluss darauf hat bzw. ob ich in diesen Fᅵllen den Wert
ermitteln kann und dem Server mitschicken, sodass er nach spᅵtestens max
- 1 Sekunde eine Antwort sendet auch wenn diese leer ist) und der
Browser eine neue Verbindung aufmacht zum Warten.
Dᅵrfte etwas dauern dies zu testen, daher wᅵre es natᅵrlich nᅵtzlich,
wenn jemand sowas schon mal getestet hatte. :)
> ausprobieren ist so eine Sache bei den vielen Browserversionen und
> ihre Eigenarten und Einstellungsmᅵglichkeiten. ;)
Bei IE 8 kann man es einstellen:
http://msdn.microsoft.com/en-us/library/cc304105(VS.85).aspx
Ansonsten blockt der Aufruf so lange, bis der Server antwortet.
Das bezieht sich aber auf das Skript. Der Nutzer kann so einen Timeout
nicht in seinem Browser einstelltn.
Im W3C-Draft (http://www.w3.org/TR/XMLHttpRequest/) steht unter "Not in
this Specification": "Timers have been suggested, perhaps an ontimeout
attribute;", also gibt es noch nichts normatives.
Matthias
Jep, solang ich als Entwickler es mitgeben kann ist es ja egal, da kann
ich ja einfach mitgeben, dass ich keinen Timeout haben will.
> Im W3C-Draft (http://www.w3.org/TR/XMLHttpRequest/) steht unter "Not in
> this Specification": "Timers have been suggested, perhaps an ontimeout
> attribute;", also gibt es noch nichts normatives.
Also kann es der Browserhersteller tun wie er will (naja, wie immer halt
*g*).
Falls Du das wolltest, wäre das hier off-topic.
> Die Frage wäre dann natürlich, geht das auch wenn die Antwort vom Server
> mal 5 Minuten braucht, weil sich gerade nichts ändert?
Ja, das wäre die Frage. Die korrekte Antwort darauf wäre "Nein".
> Oder kennt ihr sinnvollere Möglichkeiten mit JavaScript ein Pushing
> durchzuführen?
Das haben wir hier bereits ausführlich diskutiert. Google ist Dein Freund.
[psf 6.1]
Bitte stell das nächste Mal bessere Fragen bzw. stell bitte Deine Fragen besser.
<http://www.tty1.net/smart-questions_de.html>
PointedEars
--
realism: HTML 4.01 Strict
evangelism: XHTML 1.0 Strict
madness: XHTML 1.1 as application/xhtml+xml
-- Bjoern Hoehrmann
Stimmt, ich habe vergessen zu schreiben "...HTTP Request mit
JavaScript...". Allgemein auch als Ajax bekannt.
Wie gut, dass es auch Leute gibt, die darauf kommen dass ich von
JavaScript rede, wenn ich in der Newsgroup für JavaScript poste. :)
>> Die Frage wäre dann natürlich, geht das auch wenn die Antwort vom Server
>> mal 5 Minuten braucht, weil sich gerade nichts ändert?
>
> Ja, das wäre die Frage. Die korrekte Antwort darauf wäre "Nein".
Und die darauf folgende Begründung? "Nein" man kann mit JavaScript
keinen HTTP Request durchführen dessen Antwort länger dauert, wenn ja wo
liegt da die Grenze wie lang die Antwort auf sich warten lassen darf?
> Das haben wir hier bereits ausführlich diskutiert. Google ist Dein Freund.
> [psf 6.1]
>
> Bitte stell das nächste Mal bessere Fragen bzw. stell bitte Deine Fragen besser.
Na wenn Google mein Freund wäre, wäre die korrekte Antwort eher "nein,
nicht ohne hässliche Verbiegungen". Aber könnte ja sein, dass die
Experten hier etwas mehr Ahnung haben und gezieltere Antworten geben
können. Zumindest ist es für mich ein logischer Schritt nach meinen
Recherchen entsprechend nachzufragen, statt einfach auf Google zu vertrauen.
Aber wenn spezielle Links hast, die eine Lösung für das Problem
anbieten, welche in den gängigen Browsern ohen größere Verränkungen (wie
dem Einsatz von Flash für Socketverbindungen oder IFrames)
funktionieren, wäre mir sogar geholfen. Oder ein "Nein", pushing mit
JavaScript funktioniert nicht, dafür muss man Flash/Java etc. einsetzen
würde natürlich auch hilfreich sein.
--
Mit freundlichen Grüßen,
Christoph Herrmann
Das ändert an der Korrektheit meiner Aussage gar nichts, denn es ist nicht
die Sprache, sondern das Objektmodell und damit letztlich wieder die
Laufzeitumgebung (der Browser), welche diese Funktionalität bereitstellt.
> Wie gut, dass es auch Leute gibt, die darauf kommen dass ich von
> JavaScript rede, wenn ich in der Newsgroup für JavaScript poste. :)
Viel zu lernen Du noch hast, junger Schüler.™
>>> Die Frage wäre dann natürlich, geht das auch wenn die Antwort vom Server
>>> mal 5 Minuten braucht, weil sich gerade nichts ändert?
>> Ja, das wäre die Frage. Die korrekte Antwort darauf wäre "Nein".
>
> Und die darauf folgende Begründung?
Ergibt sich daraus, dass das hier off-topic ist.
> "Nein" man kann mit JavaScript keinen HTTP Request durchführen dessen
> Antwort länger dauert,
Im allgemeinen ist das richtig. Es mag Einzelfälle geben, für die diese
Antwort nicht richtig ist. Diese herauszufinden hat aber nichts mit der
Programmiersprache zu tun (siehe oben).
> wenn ja wo liegt da die Grenze wie lang die Antwort auf sich warten lassen darf?
Dort wo sie der Hersteller des jeweiligen HTTP-Clients definiert.
>> Das haben wir hier bereits ausführlich diskutiert. Google ist Dein Freund.
>> [psf 6.1]
>>
>> Bitte stell das nächste Mal bessere Fragen bzw. stell bitte Deine Fragen besser.
>
> Na wenn Google mein Freund wäre, wäre die korrekte Antwort eher "nein,
> nicht ohne hässliche Verbiegungen". Aber könnte ja sein, dass die
> Experten hier etwas mehr Ahnung haben und gezieltere Antworten geben
> können. Zumindest ist es für mich ein logischer Schritt nach meinen
> Recherchen entsprechend nachzufragen, statt einfach auf Google zu vertrauen.
Ich meinte natürlich Google *Groups*, wo auch Diskussionen in dieser
Newsgroup (geführt von ebendiesen Experten, soweit anwendbar) archiviert werden.
Lies und beherzige bitte <http://dcljs.de/>.
PointedEars
--
> In [einem Popup] soll sich ein Link befinden, der im Hauptfenster
> ausgeführt werden soll. Habt ihr ne Ahnung, wie man das anstellt?
Links werden niemals ausgeführt, denn es sind keine Hunde, mit denen man
Gassi geht. (Georg Maaß in dcljs <aop009$ooab4$1...@ID-3551.news.dfncis.de>)
Mit einem Arbeitsdokument (Working Draft) zu argumentieren, zeigt, dass
derjenige, der dies tut, den W3C-Arbeitsprozess nicht verstanden hat. Lies
bitte den ersten Absatz des Abschnitts "Status of this document" dieses
Dokuments sinnentnehmend, und handle zukünftig entsprechend. Danke.
Jedoch: Selbst wenn es bereits etwas Normatives gäbe (etwa eine
W3C-Spezifikation im Status "RECommendation"), bestünde die wahrscheinliche
Möglichkeit, dass es mindestens eine nicht standardkonforme Implementation
gäbe. Das sagte also nichts über die Machbarkeit oder gar die
Sinnhaftigkeit eines solchen Ansatzes aus.
PointedEars
--
Man kann mit JavaScript eine große Zahl von Roundtrips eliminieren und
damit die Usability erhöhen. Allerdings übersteigen die Möglichkeiten
von JavaScript die zerebralen Fähigkeiten der meisten Webmaster bei
Weitem. -- Johann Burkard in dag°
JFTR: s/zu/so zu/
Argumentationen mit WDs sind natürlich nicht per se unzulässig. (So wäre es
derzeit etwa Unfug, implementierte Definitionen in CSS 2.1 nicht für eine
Argumentation heranzuziehen, weil es derzeit nur eine Candidate
Recommendation ist, denn CSS 2.1 ist vom W3C definiert als Errata für CSS2.)
PointedEars
--
Wenn Dein Browser apply nicht kennt, dann mußt Du den Browser wechseln.
Man kann den Appendix nicht mit dem Bulldozer operieren und sich dann
über ausgefranzte Narben beklagen, obwohl bekannt ist, daß dafür
chirurgisches Besteck erforderlich ist. -- Georg Maaß in dcljs
Die Verbindung kann auf beiden Seiten beendet werden. Entweder
der Browser oder Server. In den meisten Fᅵllen wird es der
Server sein, da dieser meistens so konfiguriert ist mᅵglichst
Ressourcenschonend zu arbeiten.
> Hintergrund:
> Ich mᅵchte mit JavaScript eine Pushingmᅵglichkeit. Die sinnvollste
> Methode die ich gefunden habe wᅵre einen HTTP Request vom Browser her
> aufzubauen und beim Server einfach so lange mit der Antwort zu warten,
> bis es neue Informationen fᅵr den Browser gibt. Die neuen Daten dann zum
> Browser schicken, verarbeiten und wieder einen neuen Request aufmachen
> zum Warten auf die nᅵchste ᅵnderung.
Die gᅵngigste Methode (welche ich auch selber mal fᅵr ein
Projekt implementiert habe), ist leider Polling. Du frᅵgst in
einem bestimmten Raster (z.B. alle 10 Sekunden) den Server ob es
neue Daten gibt.
Ob neue Daten vorhanden sind oder nicht kannst du z.B. ᅵber den
HTTP Status Code signalisieren. Diesen kannst du direkt aus dem
XHR Objekt lesen. Eine einfachere Mᅵglichkeit wᅵre es, wenn der
Server direkt die Daten z.B. als JSON ᅵbertrᅵgt und der Status
dort zusᅵtzlich mit ᅵbertragen wird.
Gruᅵ
Sergio Pereira