#!/opt/bin/perl use common::sense; use AnyEvent::MP; use AnyEvent::MP::Global; initialise_node; AnyEvent::MP::Global::register $NODE, "eg_chat_server"; my %clients; sub msg { print "relaying: $_[0]\n"; snd $_, $_[0] for values %clients; } sub client_connect { my ($client, $name) = @_; mon $client; mon $client, sub { delete $clients{$client}; msg "$name (quits, @_)"; }; $clients{$client} = $client; msg "$name (joins)"; rcv $SELF, sub { msg "$name: $_[0]" }; } warn "server ready.\n"; AE::cv->recv;