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 Tcppoe_input_handler
poe_result
poe_error
poe_send
Should be defined in Http or TcpCOPYRIGHT
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.