EM::WebSocket サーバーと Sinatra サーバーの両方を実行する Ruby アプリを構築しています。個人的には、これらの両方が SIGINT を処理する機能を備えていると思います。ただし、同じアプリで両方を実行すると、Ctrl + C を押すとアプリが続行されます。私の推測では、そのうちの 1 つが SIGINT をキャプチャしており、もう 1 つもそれをキャプチャできないようにしています。しかし、それを修正する方法がわかりません。
一言で言えばコードは次のとおりです。
require 'thin'
require 'sinatra/base'
require 'em-websocket'
EventMachine.run do
class Web::Server < Sinatra::Base
get('/') { erb :index }
run!(port: 3000)
end
EM::WebSocket.start(port: 3001) do |ws|
# connect/disconnect handlers
end
end