この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
node.jsでRPCサーバ
今回紹介するdnodeモジュールは、node.jsをRPCサーバにするためのモジュールです。 サーバ側で関数を定義しておけば、dnodeサーバへ接続してその関数を呼び出すことができます。 また、dnodeはjavascript以外のクライアントもあります。
環境構築方法
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.4
- Node.js : v0.8.15
- npm : 1.1.66
適当なディレクトリを作成し、そこでnpmを使用して必要モジュールをインストールします。
% mkdir dnode
% cd dnode
% npm install dnode
dnodeを動かしてみる
まずはサーバ側の実装です。dnode関数内で、クライアントから使用したい関数を定義します。 ここではgreetという名前の関数を定義しています。
//app.js
var dnode = require('dnode');
var server = dnode({
greet : function (n, cb) {
cb('hello,' + n);
}
});
server.listen(3000);
サーバ側が定義できたら次はクライアント側(client.js)を作成します。 dnodeサーバへ接続し、サーバ側で定義したgreet関数を呼び出しています。
//client.js
var dnode = require('dnode');
var d = dnode.connect(3000);
d.on('remote', function (remote) {
remote.greet('syuta', function (say) {
console.log('greet:' + say);
d.end();
});
});
dnodeサーバを起動し、クライアントを実行して関数を呼び出してみましょう。 問題なく実行できることがわかります。
//dnodeサーバ起動(バックグラウンド)
% node app.js &
//クライアント実行
% node client.js
まとめ
dnodeモジュールを使って、簡単にRPCサーバを実装することができました。 javascript以外にもJava用クライアントとかRuby用クライアント等があるので、そこから接続することもできます。