1

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
4

2 に答える 2

0

Thin をバージョン 1.5.1 にダウングレードすると、問題なく動作します。有線。

于 2014-03-15T17:27:46.630 に答える