NAME
ZeroMQ::PubSub::Server - Listen for published events and broadcast them to all connected subscribers
SYNOPSIS
my
$server
= ZeroMQ::PubSub::Server->new(
# clients connect here to publish events
# clients connect here to subscribe to events
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.