Daisuke Murase > POE-Component-Server-JSONRPC-0.02 > POE::Component::Server::JSONRPC

Download:
POE-Component-Server-JSONRPC-0.02.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Module Version: 0.02   Source   Latest Release: POE-Component-Server-JSONRPC-0.05-bis

NAME ^

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

SYNOPSIS ^

    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 ^

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 ^

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 .. 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 ^

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 ^

Inner method for POE states.

poe__start

poe_tcp_input_handler

poe_result

poe_error

AUTHOR ^

Daisuke Murase <typester@cpan.org>

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: