Websocket ruby​​应用程序在页面重新加载后崩溃

时间:2014-11-05 12:24:08

标签: javascript websocket sinatra eventmachine

我有一个 Sinatra 应用,它使用带有 sinatra-websocket gem的websockets。其目的是使用 Watir 将数据发送到其他网站上的表单。我使用websockets来允许我的用户插入capthcas和sms确认码而不会丢失Watir会话。

因此,用户转到此页面https://secret-gorge-5083.herokuapp.com,填写表单,按下红色按钮,然后将其重定向到此页面https://secret-gorge-5083.herokuapp.com/sending_out,他们可以通过按此按钮决定他们的数据应该去哪些网站红色按钮。

但是如果用户重新加载最后一页,它将首先加载而没有所有外部文件(在js控制台中有net::ERR_CONNECTION_REFUSED消息),如果再次重新启动它,它将使应用程序崩溃{{1} }日志。

我想事件机器没有初始化,因为初始化它的js文件在第一次重载(连接拒绝)后没有加载。

以下是我在 github 上的代码:https://github.com/lakesare/credits/

为什么拒绝连接?如何处理我的应用程序严重崩溃?

1 个答案:

答案 0 :(得分:0)

我的 credits.rb 中的数字我有这些行:

  connection.onclose do
    warn("websocket closed from credits.rb")
    settings.sockets.delete(ws)
  end

我没有ws变量 - 我将其重命名为connection并且没有注意到这一点。因此,每当关闭websocket连接时,它都会遇到一个无法识别的变量 - 从而导致应用程序崩溃。我将ws更改为connection,现在可以正常重新加载。