最終更新: byteball_dev 2018年05月13日(日) 16:29:55履歴
[調査中]
解説ページ(英語)
https://github.com/byteball/byteballcore/wiki/JSON...
さっと読む限りJSON-RPCを経由してあらゆる開発言語でシステム開発が出来るとの事です。
精読はしていないので現在調査中。
サンプルコード
https://github.com/byteball/rpcify
JSON-RPCについての解説はここがわかりやすいと思います。
https://qiita.com/oohira/items/35e6eaaf4b44613ad7d...
*以下調査メモになります。
参考資料となりそうなHP
json-rpcとHTML
https://github.com/njbartlett/polymer-json-rpc/blo...
HTTPプロトコルを経由したjson-rpcの解説?
http://www.jsonrpc.org/historical/json-rpc-over-ht...
この点以降、上記の関数はJSON-RPCインタフェースを介して利用できるようになります。 Node.jsのクライアントが呼び出す必要がある
解説ページ(英語)
https://github.com/byteball/byteballcore/wiki/JSON...
さっと読む限りJSON-RPCを経由してあらゆる開発言語でシステム開発が出来るとの事です。
精読はしていないので現在調査中。
サンプルコード
https://github.com/byteball/rpcify
JSON-RPCについての解説はここがわかりやすいと思います。
https://qiita.com/oohira/items/35e6eaaf4b44613ad7d...
*以下調査メモになります。
参考資料となりそうなHP
json-rpcとHTML
https://github.com/njbartlett/polymer-json-rpc/blo...
HTTPプロトコルを経由したjson-rpcの解説?
http://www.jsonrpc.org/historical/json-rpc-over-ht...
このモジュールを使用すると、node.jsモジュールの機能をJSON-RPC経由で共有できます。
これにより、任意の言語で書かれた他のプログラムからnode.jsモジュールの機能が利用できるようになります。
インストール
ソースコードを取り込んで以下のコマンドを実行
install
これにより、任意の言語で書かれた他のプログラムからnode.jsモジュールの機能が利用できるようになります。
インストール
ソースコードを取り込んで以下のコマンドを実行
install
var rpcify = require('rpcify'); var headlessWallet = require('headless-byteball'); // this is a module whose methods you want to expose via RPC var balances = require('byteballcore/balances.js'); // another such module // start listening on RPC port rpcify.listen(6333, '127.0.0.1'); // expose some functions via RPC rpcify.expose(headlessWallet.issueChangeAddressAndSendPayment); rpcify.expose(balances.readBalance, true); rpcify.expose([headlessWallet.readFirstAddress, headlessWallet.readSingleWallet, headlessWallet.issueOrSelectAddressByIndex], true);
この点以降、上記の関数はJSON-RPCインタフェースを介して利用できるようになります。 Node.jsのクライアントが呼び出す必要がある
var rpc = require('json-rpc2'); var client = rpc.Client.$create(6333, '127.0.0.1'); client.call('issueChangeAddressAndSendPayment', [asset, amount, to_address, device_address], function(err, unit) { ... });これはrequire()モジュールから関数を呼び出す場合と同様です。 他の言語のプログラムも、RPC経由で公開されているnode.js関数にアクセスできます。
コールバックを介してその結果を返す関数を公開することができます。 コールバックは関数の最後の引数でなければなりません。
JSON-RPCリクエストのパラメータは、引数として関数に渡されます。 パラメータは、JSONがサポートする任意のタイプ(文字列、数値、ブール値、オブジェクト)でも構いませんが、関数ではありません。 JSON-RPCリクエストのパラメータが配列の場合、引数のリストに展開されます。 オブジェクトの場合は、第1引数として関数に渡されます。
コールバックのパラメータは、JSON-RPCレスポンスに返されます。 デフォルトでは、コールバックの最初の引数はエラーとみなされます。 真実であれば、要求はエラー応答となります:
コールバックの最初の引数がfalsyの場合、要求は成功します。 残っている引数が1つしかない場合は、JSON-RPCリクエストの結果として返されます。 残りの引数がさらにある場合、それらは配列にラップされます。
expose()のオプションのbNoErrorsパラメータ(下記参照)が真実である場合、要求はエラーで終わることはなく、コールバックの最初のパラメータと後続のパラメータが結果として解釈されます。
元の名前で関数を公開するには、
異なる名前で関数を公開するには、次の構文を使用します。
JSON-RPCリクエストのパラメータは、引数として関数に渡されます。 パラメータは、JSONがサポートする任意のタイプ(文字列、数値、ブール値、オブジェクト)でも構いませんが、関数ではありません。 JSON-RPCリクエストのパラメータが配列の場合、引数のリストに展開されます。 オブジェクトの場合は、第1引数として関数に渡されます。
コールバックのパラメータは、JSON-RPCレスポンスに返されます。 デフォルトでは、コールバックの最初の引数はエラーとみなされます。 真実であれば、要求はエラー応答となります:
{"jsonrpc":"2.0","error":{"code":-32603,"message":"not enough spendable funds from 4MIACTR3WJMC4UUKHHU3VX55LWW77EZW,QM63QOKZVOHGTMCKRQCB4GJVD4FCHL56 for 1000000000641"}
コールバックの最初の引数がfalsyの場合、要求は成功します。 残っている引数が1つしかない場合は、JSON-RPCリクエストの結果として返されます。 残りの引数がさらにある場合、それらは配列にラップされます。
expose()のオプションのbNoErrorsパラメータ(下記参照)が真実である場合、要求はエラーで終わることはなく、コールバックの最初のパラメータと後続のパラメータが結果として解釈されます。
元の名前で関数を公開するには、
rpcify.expose(func, bNoErrors);複数の関数を元の名前で公開するには、関数の配列を渡します。
rpcify.expose([func1, func2], bNoErrors);
異なる名前で関数を公開するには、次の構文を使用します。
rpcify.expose('func_name', func, bNoErrors); rpcify.expose({func1_name: func1, func2_name: func2}, bNoErrors);
コメントをかく