Pedro Melo

NAME

POE::Component::Rendezvous::Publish - publish Rendevouz services from POE

SYNOPSIS

  use POE qw(Component::Rendezvous::Publish);

  POE::Component::Rendevouz::Publish->create(
      name   => 'My POE-based service',
      type   => '_service._protocol',
      port   => 12345,
      domain => 'local.',
  );

DESCRIPTION

POE::Component::Rendezvous::Publish makes your network-oriented POE-based services available via Rendezvous browsing.

If your POE-based service has a Web interface, you can publish a service via Rendezvous, and all the Rendezvous-enabler browsers will see it.

POE::Component::Rendezvous::Publish uses Net::Rendezvous::Publish to do the actual work. Check it's documentation to see which mDNS systems are supported. As of March 2005, it supported Apple and Howl.

Constructor Parameters

name

A descriptive name for the service.

type

The type of service. This is a string of the form _service._protocol.

port

The port on which you're advertising the service.

domain

The domain in which we advertise a service. Defaults to "local.".

EXAMPLE

A simple HTTP server published via Rendezvous would look like this:

    use POE qw( Component::Rendezvous::Publish Component::Server::HTTP );
    use HTTP::Status;


    my $port = $ENV{HTTP_PORT} || 8787;

    my $http = POE::Component::Server::HTTP->new(
      Port => $port,
      ContentHandler => {
          '/' => \&respond,
      },
      Headers => {
        Server => 'My Rendezvous-aware HTTP server',
      },
    );


    my $publish = POE::Component::Rendezvous::Publish->create(
      name => 'simple http server',
      type => '_http._tcp',
      port => $port,
    );


    $poe_kernel->run;


    sub respond {
      my ($request, $response) = @_;

      $response->code(RC_OK);
      $response->content("Yelllow, you fetched " . $request->uri);
      
      return RC_OK;
    }

TODO

Support stop publishing a service (given it's name).

Allow publish of several services using the same PoCo::Rendezvous::Publish session.

Right now, we pool each 2 seconds to see if there are network messages pending to be replied. The pooling is limited to 0.01 seconds.

I'm trying to see how we can get a file descriptor from the modules below, so that we can use POE internal Wheels to warn us when there is traffic to be dealt with, thus improving the efficienty of this module.

We don't have any tests either.

SEE ALSO

POE, Net::Rendezvous::Publish, Net::Rendezvous::Publish::Backend::Apple, Net::Rendezvous::Publish::Backend::Howl

ACKNOWLEDGMENTS

Parts of this documentation where stolen^Hcopied from Net::Rendezvous::Publish documentation by Richard Clamp.

AUTHOR

Pedro Melo, <melo@cpan.org<gt>

COPYRIGHT AND LICENSE

Copyright 2005 by Pedro Melo

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

1 POD Error

The following errors were encountered while parsing the POD:

Around line 126:

You forgot a '=back' before '=head1'