【发布时间】:2017-05-09 22:56:56
【问题描述】:
我正在构建一个运行 EM::WebSocket 服务器和 Sinatra 服务器的 Ruby 应用程序。就个人而言,我相信这两者都具备处理 SIGINT 的能力。但是,当在同一个应用程序中运行两者时,当我按 Ctrl+C 时应用程序会继续运行。我的假设是其中一个正在捕获 SIGINT,阻止另一个也捕获它。不过,我不确定如何修复它。
简而言之,代码如下:
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
【问题讨论】:
-
感谢分享。我根据那个 SO 问题/接受的答案尝试了一些捕获 INT 和 TERM 的变体,但似乎没有什么对我有用。
标签: ruby websocket sinatra eventmachine sigint