Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi idHTTP dauerhafte Verbindung (https://www.delphipraxis.net/174814-idhttp-dauerhafte-verbindung.html)

SyntaxXx 11. Mai 2013 19:16

idHTTP dauerhafte Verbindung
 
Ich bin gerade dabei ein kleines Tool zu programmieren und benötige dafür eine dauerhafte Verbindung zum Server.
Ich benutze die idHTTP Komponente.

Doch leider habe ich keine Ahnung, wie ich damit eine Dauerhafte Verbindung zum Server bekomme, solange bis ich die Verbindung schließe.
Könnt ihr mir sagen, wie das möglich ist?

Ginko 11. Mai 2013 19:20

AW: idHTTP dauerhafte Verbindung
 
Vielleicht so:
Delphi-Quellcode:
     
with IdHTTP1 do
      begin
        Request.Accept:= 'text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1';
        Request.AcceptCharSet:= 'iso-8859-1, utf-8, utf-16, *;q=0.1';
        Request.AcceptEncoding:= 'deflate, gzip, identity, *;q=0';
        Request.Connection:= 'Keep-Alive'; //!!
        Request.ContentType:= 'application/x-www-form-urlencoded';
        Request.UserAgent:= 'Opera/9.80 (Windows NT 6.1; U; de) Presto/2.5.22 Version/10.51';
      end;
Das Keep-Alive hört sich jedenfalls danach an.

Klaus01 11. Mai 2013 19:21

AW: idHTTP dauerhafte Verbindung
 
Guten Abend,

HTTP ist ein Zustandsloses Protokoll.
Eine dauerhafte TCP Verbindung lässt das Protokoll meines Wissens nicht zu.
Es wird nur pro HTTP Nachricht eine TVP Verbindung aufgebaut.

Grüße
Klaus

SyntaxXx 11. Mai 2013 19:29

AW: idHTTP dauerhafte Verbindung
 
Ok vielen Dank.


An dieser Stelle möchte ich einfach mal sagen, wie sehr mir dieses Board hier gefällt.
Keine 5 Minuten nach Erstellung des Threads bekommt man hier eine sehr hilfreiche, leicht verständliche und fundierte Antwort.

Dafür ein riesen Danke. :)

mjustin 12. Mai 2013 11:02

AW: idHTTP dauerhafte Verbindung
 
Zitat:

Zitat von Klaus01 (Beitrag 1215066)
HTTP ist ein Zustandsloses Protokoll.
Eine dauerhafte TCP Verbindung lässt das Protokoll meines Wissens nicht zu.
Es wird nur pro HTTP Nachricht eine TVP Verbindung aufgebaut.

Seit HTTP 1.1 ist standardmäßig die TCP/IP Verbindung ständig (persistent) geöffnet, das keep-alive ist optional.

Das ist kein Wiederspruch zur Aussage HTTP sei ein zustandsloses Protokoll - keep-alive spielt sich auf einer anderen Schicht im Schichtenmodell ab.

BUG 12. Mai 2013 11:43

AW: idHTTP dauerhafte Verbindung
 
Man kann mit HTTP schon einiges verrücktes Zeug machen, zB. Streaming oder Long-Polling bzw. BOSH.
Das muss aber auf Serverseite unterstützt sein (und keine Ahnung wie idHTTP damit zurechtkommt).

mjustin 12. Mai 2013 11:58

AW: idHTTP dauerhafte Verbindung
 
Zitat:

Zitat von BUG (Beitrag 1215100)
Man kann mit HTTP schon einiges verrücktes Zeug machen, zB. Streaming oder Long-Polling bzw. BOSH.
Das muss aber auf Serverseite unterstützt sein (und keine Ahnung wie idHTTP damit zurechtkommt).

Für Streaming kann man notfalls eine Ebene tiefer gehen und TIdTCPClient einsetzen:

http://stackoverflow.com/questions/1...ream-with-indy

Long-Polling ist unproblematisch, da es einfaches HTTP ist bei dem der Client in einer Schleife mit relativ hohem Timeout (zum Beispiel 30 Sekunden) Requests an die gleiche URL sendet und so ununterbrochen lauscht, ob der Server Neuigkeiten hat.

Auch serverseitig geht Long Polling mit Indy TIdHTTPServer problemlos:

http://stackoverflow.com/questions/1...ing-jquery-and
http://mikejustin.wordpress.com/2013...-long-polling/


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz