Results 1 to 9 of 9

Thread: Hoe stream je de html output naar de browser ?

  1. #1

    Exclamation Hoe stream je de html output naar de browser ?

    Beste Allemaal,

    Ben bezig met een cgi app waarin erg veel gedaan moet worden om tot een response te komen. Dus nu zou ik graag de gebruiker op de hoogte willen houden van wat er gebeurt, dus de html online opbouwen. Steeds weer een stukje zenden naar de gebruiker. Opzoek hiernaar vond ik bij Borland het volgende stukje code, maar deze geeft hij pas weer op het moment dat de request klaar is, werkt dus niet.

    Iemand een idee hoe je steeds weer verder kan gaan met zenden ?
    Code:
    procedure TWebModule1.WebModule1WA_TestAction(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    var
      I: Integer;
      S: string;
    begin
      // Important that this is first!
      Response.SendResponse;
      S := 'About to send time stamps<br>';
      // Send the content early by accessing the Request
      // directly and writing to it.
      Request.WriteString(S);
    
      // Send some Responses and pause to simulate lengthy operations
      for I := 1 to 3 do
      begin
        // Pause for about 3 secs
        Sleep(3000);
        // Set another response
        S := TimeToStr(Now) + '<br>';
        Request.WriteString(S);
      end;
    
    end;
    Last edited by GolezTrol; 15-Oct-04 at 10:32.
    Rico van Zundert

  2. #2

    Talking GELUKT !

    Misschien interressant voor anderen.

    Het is gelukt ! Probeer de onderstaande code maar eens !
    Code:
    procedure TWebModule1.WebModule1WA_TestAction(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    var
      I: Integer;
      S: string;
    begin
      Response.SendResponse;
    
      S := '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"><TITLE>Streaming null and date values</TITLE><META content="MSHTML 5.00.2919.6307" name=GENERATOR>';
      Request.WriteString(S);
    
      // Important that this is first!
      S := 'About to send time stamps<br>';
      // Send the content early by accessing the Request
      // directly and writing to it.
      Writeln(output,s);
      Flush(Output);
    //  Handled := True;
      // Send some Responses and pause to simulate lengthy operations
      for I := 1 to 3 do
      begin
        // Pause for about 3 secs
        Sleep(1000);
        // Set another response
        S := TimeToStr(Now) + '<br>';
    //    Request.WriteString(S);
        Writeln(Output,S);
        Flush(Output);
      end;
    end;
    Last edited by GolezTrol; 15-Oct-04 at 10:33.
    Rico van Zundert

  3. #3
    Ik heb je code geprobeerd maar ik krijg na 3 seconden pas response, oftewel: pas als de actie is gedaan. Hoe krijg jij dit in je browser dan?
    Marcel

  4. #4
    Daar had ik ook eerst last van maar deze regel zorgde ervoor dat hij door iis meteen werd door gestuurd.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"><TITLE>Streaming null and date values</TITLE><META content="MSHTML 5.00.2919.6307" name=GENERATOR>

    Ik heb werkelijk geen flauw idee waarom, maar als ik deze regel bovenaan in de html zet begint hij meteen met zenden.

    Ik gebruik het nu om de gebruiker op de hoogte te houden van het proces.

    Maar mocht je willen proberen,

    http://213.201.187.254/zis/eshop/bin/eshop.exe/test

    P.s. misschien dat dit alleen op IIS werkt.
    Rico van Zundert

  5. #5
    Dat zal dus inderdaad IIS specifiek zijn, hier op Apache ging het mis. Neemt niet weg dat het zeer zinvolle info is!
    Marcel

  6. #6
    Originally posted by vzundert
    Ik heb werkelijk geen flauw idee waarom, maar als ik deze regel bovenaan in de html zet begint hij meteen met zenden.
    Ik denk dat dat eerder door het Flush commando komt dan door die regel.

  7. #7

    Cool

    Dat dacht ik ook maar zonder die regel en met flush voert hij eerst alles gewoon uit voordat hij het terug stuurt.

    Ik denk zelf dat deze regel <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> aangeeft dat het hier om een streaming output gaat.
    Rico van Zundert

  8. #8

  9. #9
    Senior Member PsychoMark's Avatar
    Join Date
    Nov 2001
    Location
    Raamsdonksveer
    Posts
    10,269
    Die doctype heeft niet direct invloed op streaming, maar wat het indirect doet is voldoende data teruggeven aan de browser om te beginnen met renderen van de pagina... dit is natuurlijk wel browser-specifiek, en soms zelfs opties-specifiek (bij Opera kan je bv instellen of ie wel of niet zo snel mogelijk moet renderen voor "tragere" sites)...
    Qui custodiet ipsos custodes

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Hoe een OBJECT naar een bestand saven ?
    By bengel in forum Algemeen
    Replies: 4
    Last Post: 06-Sep-02, 16:22
  2. Van Delphi TColor naar HTML kleuren
    By Marcel in forum Tiphoek
    Replies: 0
    Last Post: 25-Jul-02, 00:29
  3. Conversie van TColor naar webkleuren (HTML)
    By McTinus in forum Algemeen
    Replies: 2
    Last Post: 24-Jul-02, 17:02
  4. Ole automation
    By Jonne in forum Algemeen
    Replies: 13
    Last Post: 18-Mar-02, 12:20
  5. Hoe verander ik een ISAPI project naar een CGI project, en weer terug?
    By Marcel in forum Internet- en web applicaties
    Replies: 0
    Last Post: 02-Nov-01, 00:47

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •