【问题标题】:Failed to upgrade to WebSocket vs. An unauthorized connection attempt was rejected升级到 WebSocket 失败与未经授权的连接尝试被拒绝
【发布时间】:2017-09-28 06:35:12
【问题描述】:

使用 Rails 5 和 ActionCable

“升级到 WebSocket 失败”与“未经授权的连接尝试被拒绝”。 有人可以告诉我这两个错误之间的区别以及它们会在哪些功能下发生吗?我相信“未经授权的连接尝试被拒绝”发生在

App.cable = ActionCable.createConsumer();

我确实有:

def find_verified_user 
  if verified_user = env['warden'].user
    verified_user
  else
    reject_unauthorized_connection
  end
end

但我不确定升级错误。

我真正想做的是捕捉超时用户(未注销,但超时)尝试发送消息的时间。所以我认为我不必在连接时捕捉到这个,而是在请求时。有什么方法可以根据请求处理错误吗?

这里的最终目标是在尝试发送消息时将超时用户重定向到登录页面。现在,如果一个超时的用户发送了一条消息,那么当他们点击发送时,这条消息就不会显示出来,也不会向用户说明原因。

【问题讨论】:

    标签: ruby-on-rails websocket devise actioncable


    【解决方案1】:

    “未经授权的连接尝试被拒绝”是reject_unauthorized_connection 调用的直接结果。

    “升级到 WebSocket 失败”是 connect 调用 reject_unauthorized_connection 的结果。这意味着您的套接字连接尝试失败,并且您没有从 HTTP 模式切换(“升级”)到 WebSockets 模式。

    如果我想实现发送消息的超时用户权限,我只需将上次发送消息的时间保存在数据库中 - 在每条新消息之前检查它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 2018-01-25
      • 2018-10-29
      • 2018-12-15
      • 1970-01-01
      相关资源
      最近更新 更多