ruby-on-rails – 从Ruby on Rails应用程序启动和停止eventmachi
发布时间:2020-12-17 01:58:51 所属栏目:百科 来源:网络整理
导读:更正: 具体来说,我希望从Ruby on Rails控制器启动和停止EventMachine(EM). (我被告知’瘦’会很好用.) 注意: 此EM服务器与运行Ruby on Rails应用程序的Mongrel服务器是SEPARATE. (EM服务器正在接受来自Arduino微控制器的连接.) 运行’Thin’作为服务器..我
更正:
具体来说,我希望从Ruby on Rails控制器启动和停止EventMachine(EM). (我被告知’瘦’会很好用.) 注意: 运行’Thin’作为服务器..我应该能够接受HTTP请求和Arduino的连接. # Starts Server def start_control_server EventMachine::run { @EchoServer = EventMachine::start_server "0.0.0.0",40013,EchoServer } end # Attempts ( fails ) to stop server def stop_control_server EventMachine.stop_server(@EchoServer) end 如果您推荐其他服务器而不是直接的EventMachine,请提供执行上述代码的代码. 完整的控制器代码可在此处获取:http://pastie.org/1698383 解决方法
我猜你没有在另一个控制器方法中调用start_control_server和stop_control_server.这意味着当您调用stop时,您的实例变量(@EchoServer)将不存在.
一种解决方案可能是在会话中存储从start_server返回的id.如在 def start_control_server session[:em_server_id] = EventMachine::start_server "0.0.0.0",4000,EchoServer end def stop_control_server EventMachine.stop_server(session[:em_server_id]) if session[:em_server_id] session[:em_server_id] = nil end 此外,如果您使用thin运行rails应用程序,那么您已经在事件机器循环中,因此您不需要调用EventMachine :: run.调用EventMachine.stop_server似乎不会断开已连接的任何内容,但会阻止任何进一步的连接建立到指定的端口. 希望有一些用处! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |