NAME

Web::Hippie::PubSub - Comet/Long-poll event server using AnyMQ

SYNOPSIS

  use Plack::Builder;
  use AnyMQ;
  use AnyMQ::ZeroMQ;

  my $bus = AnyMQ->new_with_traits(
    traits            => [ 'ZeroMQ' ],
    subscribe_address => 'tcp://localhost:4001',
    publish_address   => 'tcp://localhost:4000',
  );

  # your plack application
  my $app = sub { ... }

  builder {
    # mount hippie server
    mount '/_hippie' => builder {
      enable "+Web::Hippie::PubSub",
        keep_alive => 30,   # send 'ping' event every 30 seconds
        bus        => $bus;
      sub {
        my $env = shift;
        my $args = $env->{'hippie.args'};
        my $handle = $env->{'hippie.handle'};
        # Your handler based on PATH_INFO: /init, /error, /message
      }
    };
    mount '/' => my $app;
  };

ATTRIBUTES

bus

AnyMQ bus configured for publish/subscribe events

keep_alive

Number of seconds between keep-alive events. ZMQ::Server will send a "ping" event to keep connections alive. Set to zero to disable.

METHODS

stats

Returns hashref of statistical event handling information.

DESCRIPTION

This module adds publish/subscribe capabilities to Web::Hippie using AnyMQ.

See eg/event_server.psgi for example usage.

SEE ALSO

Web::Hippie, Web::Hippie::Pipe, AnyMQ, ZeroMQ::PubSub

AUTHOR

Mischa Spiegelmock <revmischa@cpan.org>

Based on work by:

Chia-liang Kao <clkao@clkao.org>

Jonathan Rockway <jrockway@cpan.org>

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.