diff --git a/examples/Perl5/client.pl b/examples/Perl5/client.pl new file mode 100644 index 0000000..c1e78b9 --- /dev/null +++ b/examples/Perl5/client.pl @@ -0,0 +1,38 @@ +#!/usr/bin/env perl + +use JSON::XS 'decode_json'; +use ZMQ::FFI qw(ZMQ_SUB); +use Time::HiRes q(usleep); +use Compress::Zlib; + +sub msg { + printf STDERR @_; +} + +my $endpoint = "tcp://eddn.edcd.io:9500"; +my $ctx = ZMQ::FFI->new(); + +my $s = $ctx->socket(ZMQ_SUB); + +$s->connect($endpoint); + +$s->subscribe(''); +while(1) +{ + usleep 100_000 until ($s->has_pollin); + my $data = $s->recv(); + + # turn the json into a perl hash + my $pj = decode_json(uncompress($data)); + my $schema = $pj->{'$schemaRef'}; + msg "schema = %s\n", $schema; + msg " software = %s\n", $pj->{header}->{softwareName}; + if ($schema eq "https://eddn.edcd.io/schemas/journal/1") { + my $event = $pj->{message}->{event}; + if ($event eq "FSDJump") { + msg " StarSystem = %s\n", $pj->{message}->{StarSystem}; + } + } + msg "------\n"; +} +$s->unsubscribe('');