#!/usr/bin/perl -w use strict; use YAML; sub POE::Kernel::ASSERT_DEFAULT () { 1 } use POE; use POE::Component::Server::TCP; use POE::Filter::Reference; POE::Component::Server::TCP->new(Alias => 'TOF', Port => 2222, ClientFilter => ['POE::Filter::Reference'], ClientInput => \&client_input, InlineStates => {Update_clients => \&update_clients, }, ); POE::Session->create(inline_states => {_start => \&_start, Send_updates => \&send_update, _stop => \&_stop, }, ); POE::Kernel->run(); exit; sub client_input { my $input = $_[ARG0]; print 'my input = ' . YAML::Dump($input); } sub update_clients { my $update = $_[ARG0]; print 'my update is ' . YAML::Dump($update); } sub _start { my $kernel = $_[KERNEL]; print "session started\n"; $kernel->yield('Send_update'); } sub send_update { my $kernel = $_[KERNEL]; my $update = {Header => 'update', Msg => 'Hello Server', }; $kernel->post('TOF', 'Update_clients', $update); $kernel->delay('Send_update', 10); } sub _stop { print "session end\n"; }