NAME
ZeroMQ::PubSub::Server - Listen for published events and broadcast them to all connected subscribers
SYNOPSIS
use ZeroMQ::PubSub::Server;
my $server = ZeroMQ::PubSub::Server->new(
    # clients connect here to publish events
    publish_addrs => [ 'tcp://0.0.0.0:4000', 'ipc:///tmp/pub.sock' ],
    # clients connect here to subscribe to events
    subscribe_addrs => [ 'tcp://0.0.0.0:5000', 'ipc:///tmp/sub.sock' ],
    debug => 1,
);
# listen for events forever
{
    # listen for events being published to our server
    my $pub_sock = $self->bind_publish_socket;
    # set up to broadcast events to waiting subscribers
    my $sub_sock = $self->bind_subscribe_socket;
    # main processing loop
    while (1) {
        # block while we get one message
        my $msg = $server->recv;
        # deep clone $msg so that event handlers can't modify it
        my $orig = clone($msg);
        # run event handlers
        $self->dispatch_event($msg);
        # broadcast event to subscribers
        $server->broadcast($orig)
    }
}
# exact same as above
$server->run;
ATTRIBUTES
publish_addrs
ArrayRef of socket addresses to receive client event publishing requests
subscribe_addrs
ArrayRef of socket addresses that clients can connect to for receiving events
METHODS
bind_publish_socket
Bind publish socket to publish_addrs
bind_subscribe_socket
Listen for clients wishing to subscribe to published events
recv
Blocks and receives one event. Returns object parsed from JSON, or undef if failure.
broadcast($event)
Sends $event to all connected subscribers.
poll_once
Blocks and waits for a publish message, dispatches to event handlers, then broadcasts it to subscribers.
run
Runs pubsub server forever. See synopsis.