#!/usr/bin/env perl package SampleChatServer; use strict; use warnings; use base 'Net::Server::Multiplex'; use Protocol::WebSocket::Handshake::Server; use Protocol::WebSocket::Frame; __PACKAGE__->run; my $hs; my $frame; sub mux_connection { my $self = shift; my ($mux, $fh) = @_; my $peer = $self->{peeraddr}; $self->{id} = $self->{net_server}->{server}->{requests}; $self->{peerport} = $self->{net_server}->{server}->{peerport}; } sub mux_input { my $self = shift; my ($mux, $fh, $in_ref) = @_; $hs ||= Protocol::WebSocket::Handshake::Server->new; $frame ||= Protocol::WebSocket::Frame->new; if (!$hs->is_done) { $hs->parse($$in_ref); if ($hs->is_done) { print $fh $hs->to_string; } $$in_ref = ""; return 0; } $frame->append($$in_ref); while (my $message = $frame->next) { print $fh $frame->new($message)->to_bytes; } $$in_ref = ""; }