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


POE-Component-Server-JSONRPC documentation  | view source Contained in the POE-Component-Server-JSONRPC distribution.

Index


NAME

Top

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

SYNOPSIS

Top

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

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

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

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

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

DESCRIPTION

Top

This module is a POE component for tcp 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

Top

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

Top

ARG0

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

ARG1 .. 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 "foo", ARG2 "bar".

HANDLER RESPONSE

Top

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

ex:

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

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

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




POE METHODS

Top

Inner method for POE states.

poe__start

poe_tcp_input_handler

poe_result

poe_error

AUTHOR

Top

Daisuke Murase <typester@cpan.org>

COPYRIGHT

Top


POE-Component-Server-JSONRPC documentation  | view source Contained in the POE-Component-Server-JSONRPC distribution.