Eric Waters > POE-Component-Server-Bayeux > POE::Component::Client::Bayeux

Download:
POE-Component-Server-Bayeux-0.04.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  0
View/Report Bugs
Module Version: 0.03   Source  

NAME ^

POE::Component::Client::Bayeux - Bayeux/cometd client implementation in POE

SYNOPSIS ^

    use POE qw(Component::Client::Bayeux);

    POE::Component::Client::Bayeux->spawn(
        Host => '127.0.0.1',
        Alias => 'comet',
    );

    POE::Session->create(
        inline_states => {
            _start => sub {
                my ($kernel, $heap) = @_[KERNEL, HEAP];
                $kernel->alias_set('my_client');

                $kernel->post('comet', 'init');
                $kernel->post('comet', 'subscribe', '/chat/demo', 'events');
                $kernel->post('comet', 'publish', '/chat/demo', {
                    user => "POE",
                    chat => "POE has joined",
                    join => JSON::XS::true,
                });
            },
            events => sub {
                my ($kernel, $heap, $message) = @_[KERNEL, HEAP, ARG0];

                print STDERR "Client got subscribed message:\n" . Dumper($message);
            },
        },
    );

    $poe_kernel->run();

DESCRIPTION ^

This module implements the Bayeux Protocol (1.0draft1) from the Dojo Foundation. Also called cometd, Bayeux is a low-latency routing protocol for JSON encoded events between clients and servers in a publish-subscribe model.

This is the client implementation. It is not feature complete, but works at the moment for testing a Bayeux server.

USAGE ^

spawn (...)

Create a new Bayeux client. Arguments to this method:

Host (required)

Connect to this host.

Port (default: 80)

Connect to this port.

SSL (default: 0)

Use SSL on connection

Alias (default: 'bayeux_client')

The POE session alias for local sessions to interact with.

Debug (default: 0)

Either 0 or 1, indicates level of logging.

LogFile (default: undef)

Logfile to write output to.

LogStdout (default: 1)

If false, no logger output to STDOUT.

CrossDomain (not implemented)

Enables cross domain protocol of messaging.

ErrorCallback (default: none)

Provide a coderef that will receive a message hashref of any failed messages (erorrs in protocol, or simply unhandled messages).

Returns a class object with methods of interest:

session

The POE::Session object returned from an internal create() call.

POE STATES ^

The following are states you can post to to interact with the client.

init ()

Initializes the client, connecting to the server, and sets up long polling.

publish ($channel, $message)

Publishes arbitrary message to the channel given. Message will have 'clientId' and 'id' fields auto-populated.

subscribe ($channel, $callback)

Subscribes client to the channel given. Callback can either be a coderef or the name of a state in the calling session. Callback will get one arg, the message that was posted to the channel subscribed to.

unsubscribe ($channel)

Unsubscribes from channel.

disconnect ()

Sends a disconnect request.

reconnect ()

Disconnect and reconnect

TODO ^

Lots of stuff.

The code currently implements only the long-polling transport and doesn't yet strictly follow all the directives in the protocol document http://svn.xantus.org/shortbus/trunk/bayeux/bayeux.html

KNOWN BUGS ^

No known bugs, but I'm sure you can find some.

SEE ALSO ^

POE, POE::Component::Server::Bayeux, POE::Component::Client::HTTP

COPYRIGHT ^

Copyright (c) 2008 Eric Waters and XMission LLC (http://www.xmission.com/). All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

AUTHOR ^

Eric Waters <ewaters@uarc.com>

syntax highlighting: