#!/usr/bin/env perl
use warnings;
use strict;
use Protocol::WebSocket::Handshake::Server;
use Protocol::WebSocket::Frame;
use POE qw(Component::Server::TCP);
my $hs = Protocol::WebSocket::Handshake::Server->new;
my $frame = Protocol::WebSocket::Frame->new;
POE::Component::Server::TCP->new(
Port => 3000,
ClientFilter => 'POE::Filter::Stream',
ClientInput => sub {
my $chunk = $_[ARG0];
if (!$hs->is_done) {
$hs->parse($chunk);
if ($hs->is_done) {
$_[HEAP]{client}->put($hs->to_string);
}
return;
}
$frame->append($chunk);
while (my $message = $frame->next) {
$_[HEAP]{client}->put($frame->new($message)->to_bytes);
}
}
);
POE::Kernel->run;