Côme BERNIGAUD > POE-Component-Server-JSONRPC > POE::Component::Server::JSONRPC

Download:
POE-Component-Server-JSONRPC-0.05-bis.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Module Version: 0.05   Source  

NAME ^

POE::Component::Server::JSONRPC - POE tcp or http based JSON-RPC server

SYNOPSIS ^

    #http version:
    POE::Component::Server::JSONRPC::Http->new(
        Port    => 3000,
        Handler => {
            'echo' => 'echo',
            'sum'  => 'sum',
        },
        SslKey  => '/path/to/the/server.key',
        SslCert => '/path/to/the/server.crt',
        Authenticate => \&authentication_handler,
        # authentication_handler must be a function that takes two parameters login and password,
        # and returns true if connection is successful, false otherwise
    );

    #tcp version:
    POE::Component::Server::JSONRPC::Tcp->new(
        Port    => 3000,
        Handler => {
            'echo' => 'echo',
            'sum'  => 'sum',
        },
    );

    sub echo {
        my ($kernel, $jsonrpc, $id, @params) = @_[KERNEL, ARG0..$#_ ];

        $kernel->post( $jsonrpc => 'result' => $id, @params );
    }

    sub sum {
        my ($kernel, $jsonrpc, $id, @params) = @_[KERNEL, ARG0..$#_ ];

        $kernel->post( $jsonrpc => 'result' => $id, $params[0] + $params[1] );
    }

DESCRIPTION ^

This module is a POE component for tcp or http based JSON-RPC Server.

The specification is defined on http://json-rpc.org/ and this module use JSON-RPC 1.0 spec (1.1 does not cover tcp streams)

METHODS ^

new

Create JSONRPC component session and return the session id.

Parameters:

Port

Port number for listen.

Handler

Hash variable contains handler name as key, handler poe state name as value.

Handler name (key) is used as JSON-RPC method name.

So if you send {"method":"echo"}, this module call the poe state named "echo".

HANDLER PARAMETERS ^

ARG0

A session id of PoCo::Server::JSONRPC itself.

ARG1

The id of the client you're treating, send that back in result/error.

ARG2 .. ARGN

JSONRPC argguments

ex) If you send following request

    {"method":"echo", "params":["foo", "bar"]}

then, "echo" handler is called and parameters is that ARG0 is component session id, ARG1 is client id, ARG2 "foo", ARG3 "bar".

HANDLER RESPONSE ^

You must call either "result" or "error" state in your handlers to response result or error.

ex:

   $kernel->post( $component_session_id => "result" => $client_id, "result value" )

$component_session_id is ARG0 in handler. If you do above, response is:

   {"result":"result value", "error":""}

POE METHODS ^

Inner method for POE states.

poe__start

poe_init_server

Should be defined in Http or Tcp

poe_input_handler

poe_result

poe_error

poe_send

Should be defined in Http or Tcp

AUTHOR ^

Daisuke Murase <typester@cpan.org> Côme BERNIGAUD <come.bernigaud@laposte.net>

COPYRIGHT ^

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.

syntax highlighting: