[英]Websocket ruby app crashes after page reload
我有一个Sinatra应用程序,该应用程序将websockets与sinatra-websocket gem一起使用。 其目的是使用Watir将数据发送到其他网站上的表单。 我使用websockets允许我的用户插入capthcas和短信确认代码而不会丢失Watir会话。
因此,用户转到此页面https://secret-gorge-5083.herokuapp.com ,填写表格,按红色按钮,然后将其重定向到此页面https://secret-gorge-5083.herokuapp.com/ send_out ,他们可以通过按红色按钮来决定其数据应进入哪些网站。
但是,如果用户重新加载最后一页,它将首先加载所有外部文件(在js控制台中带有net::ERR_CONNECTION_REFUSED
消息),并且如果您再次重新启动它,则会使用/home/username/.rvm/gems/ruby-2.1.2/gems/eventmachine-1.0.3/lib/em/connection.rb:266:in 'close_connection': eventmachine not initialized: evma_close_connection (RuntimeError)
使应用程序崩溃/home/username/.rvm/gems/ruby-2.1.2/gems/eventmachine-1.0.3/lib/em/connection.rb:266:in 'close_connection': eventmachine not initialized: evma_close_connection (RuntimeError)
日志。
我猜事件机器没有被初始化,因为初始化它的js文件在第一次重载(连接被拒绝)后没有被装载。
这是我在github上的代码: https : //github.com/lakesare/credits/ 。
为什么拒绝连接? 如何处理我的应用严重崩溃?
在我的credits.rb文件中,我有以下几行:
connection.onclose do
warn("websocket closed from credits.rb")
settings.sockets.delete(ws)
end
而且我没有ws
变量-我将其重命名为connection
,却没有注意到这一点。 因此,每次关闭websocket连接时,都会遇到无法识别的变量-从而导致应用崩溃。 我将ws
更改为connection
并且现在可以在重新加载时正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.