NAME

   Mojolicious::Plugin::Pubsub - Pubsub plugin for Mojolicious

VERSION

   version 0.002

SYNOPSIS

     # Mojolicious
     my $pubsub = $app->plugin('Pubsub', { cb => sub { print "Message: $_[0]\n"; }, socket => 'myapp.pubsub', });
     $app->publish("message");

     # Mojolicious::Lite
     my $pubsub = plugin Pubsub => { cb => sub { print "Message: $_[0]\n"; }, socket => 'myapp.pubsub', };
     app->publish("message");

DESCRIPTION

   Easy way to add pubsub to your Mojolicious apps; it hooks into the
   Mojo::IOLoop to send and receive messages asynchronously.

NAME

   Mojolicious::Plugin::Pubsub - Pubsub plugin for Mojolicious

OPTIONS

cb

   Takes a callback CODE reference.

socket

   A path to a UNIX socket used to communicate between the publishers. By
   default this will be $app->moniker . '.pubsub'.

HELPERS

publish

     $c->publish("message");
     $c->publish(@args);

   Publishes a message that the subscribing callbacks will receive.

subscribe

     $c->subscribe($cb);

   Add the $cb code reference to the callbacks that get published
   messages.

unsubscribe

     $c->unsubscribe($cb);

   Remove the $cb code reference from the callbacks that get published
   messages.

SUBSCRIBERS

     my $subscriber = sub {
       my @args = @_;
       ...
     };

   Subscribers sent to the cb option, or the subscribe helper should
   simply be CODE references that handle the arguments passed in. The
   @args will be the same as what was passed in to the publish helper,
   except they will have gotten JSON encoded via Mojo::JSON on the way, so
   only data structures that consist of regular scalars, arrays, hashes,
   and objects that implement TO_JSON or that stringify will work
   correctly. See Mojo::JSON for more details.

METHODS

register

     my $pubsub = $plugin->register(Mojolicious->new, { cb => sub { ... }, socket => $path });

   Register plugin in Mojolicious application.

SEE ALSO

   Mojolicious, Mojo::Redis2.

AUTHOR

   Andreas Guldstrand <[email protected]>

COPYRIGHT AND LICENSE

   This software is Copyright (c) 2018 by Andreas Guldstrand.

   This is free software, licensed under:

     The MIT (X11) License