#!/usr/bin/env perl use strict; use warnings; use IO::Event; use Protocol::WebSocket::Handshake::Server; use Protocol::WebSocket::Frame; my $ioe = IO::Event::Socket::INET->new( LocalAddr => 'localhost', LocalPort => 3000, Listen => 1, Blocking => 0 ); IO::Event::loop; my $hs; my $frame; sub ie_connection { my ($handler, $ioe) = @_; $hs = Protocol::WebSocket::Handshake::Server->new; $frame = Protocol::WebSocket::Frame->new; $ioe->accept; } sub ie_input { my ($handler, $client, $input_buffer_reference) = @_; if (!$hs->is_done) { $hs->parse($$input_buffer_reference); if ($hs->is_done) { print $client $hs->to_string; } $$input_buffer_reference = ''; return; } $frame->append($$input_buffer_reference); while (my $message = $frame->next) { print $client $frame->new($message)->to_bytes; } $$input_buffer_reference = ''; return; }