PEF-Front-WebSocket
view release on metacpan or search on metacpan
=head1 NAME
PEF::Front::WebSocket - WebSocket framework for PEF::Front
=head1 SYNOPSIS
# startup.pl
use PEF::Front::Websocket;
# usual startup stuff...
# $PROJECT_DIR/app/WSTest/WebSocket/Echo.pm
package WSTest::WebSocket::Echo;
sub on_message {
my ($self, $message) = @_;
$self->send($message);
}
1;
=head1 DESCRIPTION
This module makes WebSockets really easy. Every kind of WebSocket
is in its own module. Default routing scheme is C</ws$WebSocketClass>.
WebSocket handlers are located in C<$PROJECT_DIR/app/$MyAPP/WebSocket>.
=head2 Prerequisites
This module requires L<Coro>, L<AnyEvent> and L<PSGI> server that must
meet the following requirements.
=over
=item *
C<psgi.streaming> environment is true.
=item *
C<psgi.nonblocking> environment is true.
=item *
C<psgix.io> environment holds a valid raw IO socket object. See L<PSGI::Extensions>.
=back
L<uwsgi|https://uwsgi-docs.readthedocs.io/en/latest/PSGIquickstart.html>
version 2.0.14+ meets all of them with C<psgi-enable-psgix-io = true>.
=head1 WEBSOCKET INTERFACE METHODS
=head2 on_message($message, $type)
A subroutine that is called on new message from client.
=head2 on_drain()
A subroutine that is called when there's nothing to send to
client after some successful send.
=head2 on_open()
A subroutine that is called each time it establishes a new
WebSocket connection to a client.
=head2 on_error($message)
A subroutine that is called when some error
happens while processing a request.
=head2 on_close()
A subroutine that is called on WebSocket close event.
=head2 no_compression()
When defined and true then no compression will be used even when it
supported by browser and server.
=head1 INHERITED METHODS
Every WebSocket class is derived from C<PEF::Front::Websocket::Base>
which is derived from C<PEF::Front::Websocket::Interface>. Even when you don't
derive your class from C<PEF::Front::Websocket::Base> explicitly,
this class will be added automatically to hierarchy.
=head2 send($buffer[, $type])
Sends $buffer to client. By default $type is 'text'.
=head2 close()
Closes WebSocket.
=head2 is_defunct()
( run in 2.091 seconds using v1.01-cache-2.11-cpan-140bd7fdf52 )