#!/usr/bin/perl
use strict;
use warnings;
use Plack::Builder;
use SockJS;
use AnyEvent;
builder {
mount '/echo' => SockJS->new(
handler => sub {
my ($session) = @_;
$session->on(
'data' => sub {
my $session = shift;
$session->write('got your message');
}
);
$session->write('connected');
my $w_cond = AnyEvent->condvar;
my $w; $w = AnyEvent->timer(
after => 0,
interval => 5,
cb => sub {
undef $w; # cleanup
$session->write('5 seconds have passed');
$w_cond->send();
}
);
$w_cond->recv;
};
);
};
####
open
connected
close
####
####
#!/usr/bin/perl
use strict;
use warnings;
use Plack::Builder;
use SockJS;
use AnyEvent;
builder {
mount '/echo' => SockJS->new(
handler => sub {
my ($session) = @_;
$session->on(
'data' => sub {
my $session = shift;
$session->write('got your message');
}
);
$session->write('connected');
my $w_cond = AnyEvent->condvar;
$w_cond->cb( sub { warn $_[0]->recv } );
my $w; $w = AnyEvent->timer(
after => 0,
interval => 5,
cb => sub {
undef $w if (0);
$session->write('5 seconds have passed');
$w_cond->send();
}
);
};
);
};