The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use strict;
use FUSE::Server;

my $server;

$server = FUSE::Server->new({Port=>35008, MaxClients=>5000, Quiet=>0});

my $data = $server->bind();
print "Server started on $data...\n";

$server->addCallback('BROADCASTALL',\&msg_broadcast);
$server->addCallback('client_start',\&msg_client_start);
$server->addCallback('client_stop',\&msg_client_stop);
$server->defaultCallback(\&unknown_command);

$SIG{INT} = $SIG{TERM} = $SIG{HUP} = sub{$server->stop();};

$server->start();

####################


sub msg_broadcast{
	my ($sock,$msg,$params) = @_;
	my @a = split /\//,$params;
	$server->sendAll($a[1],$a[2]);
}

sub msg_client_start{
	my ($sock,$msg,$params) = @_;
	$server->send($sock,'SECRET_KEY','123 456 789');
}

sub msg_client_stop{
	my ($sock,$msg,$params) = @_;
}

sub unknown_command{
	my ($sock,$msg,$params) = @_;
	print "Unknown command $msg ($params)\n";
}