The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Centrifugo::Client

Centrifugo::Client : A server-side Perl client for centrifugo

https://github.com/Orabig/centrifugo-perl-client

This module can be used to connect to a Centrifugo server with WebSockets. (Note: it does not provide access to the HTTP API of Centrifugo)

More info about Centrifugo :
https://github.com/centrifugal/centrifugo or https://fzambia.gitbooks.io/centrifugal/content/

INSTALLATION

To install this module, run the following commands:

	perl Makefile.PL
	make
	make install
	
or simply use cpanminus:

	cpanm Centrifugo::Client
	
SUPPORT AND DOCUMENTATION

After installing, you can find documentation for this module with the
perldoc command.

	perldoc Centrifugo::Client

EXAMPLE

	use Centrifugo::Client;
	use AnyEvent;

	my $cclient = Centrifugo::Client->new("$CENTRIFUGO_WS/connection/websocket");

	$cclient->connect(
		user      => $USER_ID,
		timestamp => $TIMESTAMP,
		token     => $TOKEN
	) -> on('connect', sub{
		my ($infoRef)=@_;
		print "Connected to Centrifugo version ".$infoRef->{version};
	})-> on('message', sub{
		my ($infoRef)=@_;
		print "Received message : ".encode_json $infoRef->{data};
	});
	
	# Subscription to channels are delayed until connection
	$cclient->subscribe( channel=>'my-channel&' );
	$cclient->subscribe( channel=>'public-channel' );
	$cclient->subscribe( channel=>'$private' );

	# Now start the event loop to keep the program alive
	AnyEvent->condvar->recv;
	
Note : To connect to a Centrifugo instance, your program should first ask for a TOKEN. In production this must only be done on backend side and you should never show secret to client! 

    use Centrifugo::Client qw!generate_token!;
	my $SECRET = "secret";
	my $USER = "someUser";
	my $TIMESTAMP = time();
    my $TOKEN = generate_token( $SECRET, $USER, $TIMESTAMP );