Skip to content

Instantly share code, notes, and snippets.

@ishiduca
Created May 26, 2012 12:38
Show Gist options
  • Save ishiduca/2793802 to your computer and use it in GitHub Desktop.
Save ishiduca/2793802 to your computer and use it in GitHub Desktop.
streaming on Dancer...
use strict;
use warnings;
use Dancer;
get '/' => sub {
my $resp = Dancer::Response->new(
content_type => 'text/plain',
content => "1234567890",
);
$resp->streamed(sub {
my ($status, $headers) = @_;
return sub {
my $respond = shift;
my $writer = $respond->([ $status, $headers ]);
for (1..5) {
sleep 1;
$writer->write($_ . "\n");
}
};
});
$resp;
};
dance;
use strict;
use warnings;
use Dancer;
get '/' => sub {
my $data = "";
send_file \$data,
streaming => 1,
callbacks => {
override => sub {
my($respond, $dancer_resp) = @_;
my $writer = $respond->([ 200, [ 'Content-Type' => 'text/plain' ] ]);
for (1..5) {
$writer->write("$_\n");
sleep 1;
}
},
};
};
dance;
@ishiduca
Copy link
Author

http://d.hatena.ne.jp/rightgo09/20120524/p1
Dancer 単体でやるのは悪手な気がする。ストリーミングさせるために coderef 渡しにする書き方をするんだけど、content 本体を指定しておかないとコールバックが発火しないので、何らかのデータを用意する必要があるし

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment