2017-12-20 15 views
1

私は自分のサーバー上でnodejsデーモンを実行しています。私は彼にstdinの入力を与えて、Railsコントローラからstdoutを読んでみたいと思います。実行中のバックグラウンドプロセスにルビーで接続することはできますか?

私はOpen3を見ていますが、新しいプロセスを生成するチャンスしか与えられていないようです。

開始時のオーバーヘッドが高すぎてリクエストごとに呼び出すことができないため、nodejsプロセスの実行を維持する必要があります。

+0

ノードプロセスを設定してサーバーを実行し、特定のポートで入力を受け入れることができます。 Rubyからノードへのネットリクエストを – jakerella

+0

にしてください。HTTPリクエストのオーバーヘッドはかなり高いです。 – ciaoben

+1

他の方法がなければ(私はRubyの人ではありません)、ちょっと考えてください。あなたは実際にはHTTPの下に行くことができますが、[Net API](https://nodejs.org/api/net.html)を使用してそれをまっすぐなTCPリクエストにすることができます – jakerella

答えて

0

一般に、実行中のプロセスのIOストリームが最初に設定されていない限り、そのプロセスに接続する方法はありません。例えば、プロセスがpipeから読み込むように設定されていれば簡単です:他のファイルと同じようにRubyに書き込むだけです(これはOpen3のlibのようなものです)。

通常、デーモンの場合、パイプで入力をハイジャックするよりも適切な方法がありますが、実行している特定のデーモンと、それがどのようにOSによって管理されているかによって異なります。たとえば、socketsは、* nixシステム上で実行中のプロセスと通信する一般的な方法です。

関連する問題