Windowsベースのデスクトップ アプリケーションに Web インターフェイスを提供したいと考えています。また、その逆も可能です。私のデスクトップ アプリケーションは wxRuby で作成され、Web サーバーは Sinatra (webrick を使用) です。最も単純なアイデアは、それらを一緒にマッシュアップすることでしたが、これはうまくいきません。
このコードは機能しません。Web サーバーと GUI アプリは同時に実行されません。デスクトップ アプリケーションが最初に実行され、次に閉じられた後に実行されます。シナトラが始まります。
require 'wx'
require 'sinatra'
configure do set :server, 'webrick' end
get '/' do
"Sinatra says hello"
end
class MyApp < Wx::App
def on_init
@frame = Wx::Frame.new( nil, -1, "Application" )
@frame.show
end
end
app = MyApp.new
app.main_loop
そこで、最後の2行を次のように変更することを考えました
Thread.new do
app = MyApp.new
app.main_loop
end
また。デスクトップ アプリは閉じられるまで実行され、その後 Web サーバーが開始されます。そこで、Sinatra をスレッドで開始してみました。
Thread.new do
require 'sinatra'
configure do set :server, 'webrick' end
get '/' do
"Sinatra says hello"
end
end
require 'wx'
class MyApp < Wx::App
def on_init
@frame = Wx::Frame.new( nil, -1, "Application" )
@frame.show
end
end
app = MyApp.new
app.main_loop
また。デスクトップ アプリは閉じられるまで実行され、その後 Web サーバーが開始されます。
アドバイスをお願いしますが、プロセスを 1 つだけにしたいということを覚えておいてください。 ソリューションが 2 つのプロセスである場合。ポーリングを必要としない強力なプロセス間通信が必要です。
ありがとう!ジェフ