Meteor を使用してサーバー側のルートを介して Rserve サーバーにアクセスし、R コードを呼び出そうとしています。Rserve へのアクセスを可能にする Node.js モジュールはnode-rioです。 meteorhacks:npm Meteor パッケージの Async.wrap 関数を使用して、「評価」メソッドをラップしました。ブラウザでルート パス「/rio」にアクセスしようとすると、コンソール ログに「1」が書き込まれます。これは、R のコマンド「1」の評価としては正しいのですが、Chrome は「Waiting」というメッセージでハングします。ローカルホスト用」。次の行に進まず、「Result: 1」が表示されることはありません。「net::ERR_EMPTY_RESPONSE」というメッセージが最終的に Chrome に表示されます。
Router.route('/rio', function() {
var rio = Meteor.npmRequire('rio');
var evalSync = Async.wrap(rio, 'evaluate');
var result = evalSync('1');
console.log("Result: " + result);
// JSON
this.response.writeHead(200, {'Content-Type': 'application/json'});
this.response.end(result);
}, {
where: 'server'
});
「評価」にはコールバック関数のパラメーターがありますが、オプションのパラメーターにラップされてアクセスされます。
rio.evaluate(R_COMMAND, {callback: CALLBACK_FUNCTION})