I'm trying to create a simple server using Mojo, that can stream content 
back to a browser.  Basically it would be just a couple lines to send.

I figured using chunked transfer encoding would do the trick, but the 
client doesn't display any data until the final "0" chunk is sent.  I'm 
guessing there's some sort of buffering happening, and even came across 
"drain", but can't seem to get it to work.  Below is the code in it's 
simplest form.

In this example, I would expect "HI" to display on the client and 5 seconds 
later "LO" to display:

Mojo::IOLoop->server({port => 9000} => sub {

    my ($loop, $stream) = @_;

    $loop   = $loop->max_connections(1000);
    
    $stream->on(drain => sub {
 
    print "Drain\n";
#            $stream->write("0\r\n\r\n");
    });
    
    $stream->on(read => sub {
   
        my ($stream, $bytes) = @_;

        print "Bytes: $bytes\n";
      
        $stream->write("HTTP/1.1 200 OK\r\n");
        $stream->write("Connection: keep-alive\r\n");
        $stream->write("Transfer-Encoding: chunked\r\n");
        $stream->write("Content-Type: text/plain\r\n\r\n");
       

       $stream->write("2\r\n");
       $stream->write("HI\r\n");

        sleep(5);

                
        $stream->write("2\r\n");
        $stream->write("LO\r\n");

        $stream->write("0\r\n\r\n");
        
        });


});

Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

-- 
You received this message because you are subscribed to the Google Groups 
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.

Reply via email to