NAME
POEx::HTTP::Server::Response - Object encapsulating an HTTP response
SYNOPSIS
use POEx::HTTP::Server;
POEx::HTTP::Server->spawn( handler => 'poe:my-alias/handler' );
# events of session my-alias:
sub handler {
my( $heap, $req, $resp ) = @_[HEAP,ARG0,ARG1];
$resp->content_type( 'text/html' );
$resp->content( $HTML );
$resp->respond;
$resp->done;
}
DESCRIPTION
A POEx::HTTP::Server::Response
object is supplied as ARG1
to each POEx::HTTP::Server::
request handler.
It is a sub-class of HTTP::Response with the following additions:
METHODS
done
$req->done;
Finishes the request. If keep-alive isn't active, this will close the connection. Must be called after respond
or send
. Having a seperate done and <respond> means that you can do some post processing after the response was sent.
$resp->content( $HTML );
$resp->respond;
$poe_kernel->yield( 'other_event', $resp );
# Do some work in other_event
$resp->done;
error
$resp->error( $CODE, $TEXT );
Send $TEXT
as error message to the browser with status code of $CODE
. The default Content-Type is text/plain, but this may be overridden by setting the Content-Type before hand.
When "error" is called, the response is sent to the browser ("respond"
) and the request is finished ("done"
).
finished
Flase; will be set to true if when "done" is called.
respond
$resp->respond;
Sends the response to the browser. Sends headers if they aren't already sent. No more content may be sent to the browser after this method call. "done" must still be called to finish the request.
send
$resp->send( [$CONTENT] );
Sends the response header (if not already sent) and $CONTENT
to the browser (if defiened). The request is kept open and furthur calls to send
are allowed to send more content to the browser.
sendfile
$resp->sendfile( $FILE );
$resp->sendfile( $FILE, $CONTENT_TYPE );
Sends the static file $FILE to the browser. This method also deals with the requirements of HEAD
requests and If-Modified-Since
requests.
You may specify the content-type of the file either by calling content_type directly or by passing $CONTENT_TYPE
as a parameter. If the content-type hasn't already been selected, it defaults to application/octet-stream
.
If Sys::Sendfile is installed, sendfile
is used to efficiently send the file over the socket. Otherwise the file is sent in "blocksize" in POEx::HTTP::Server sized chunks.
headers_sent
unless( $resp->headers_sent ) {
$resp->headers_sent( 1 );
# ...
}
Gets or sets the fact that a response header has already been sent.
streaming
$resp->streaming( 1 );
Turns on streaming mode for the socket. "send" does this also.
SEE ALSO
POEx::HTTP::Server, POEx::HTTP::Server::Response.
AUTHOR
Philip Gwyn, <gwyn -at- cpan.org>
COPYRIGHT AND LICENSE
Copyright (C) 2010 by Philip Gwyn
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.