升级到 WebSocket 失败 vs. 未经授权的连接尝试被拒绝

bja*_*obs 2 ruby-on-rails websocket devise actioncable

使用 Rails 5 和 ActionCable

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

App.cable = ActionCable.createConsumer();
Run Code Online (Sandbox Code Playgroud)

我确实有:

def find_verified_user 
  if verified_user = env['warden'].user
    verified_user
  else
    reject_unauthorized_connection
  end
end
Run Code Online (Sandbox Code Playgroud)

但我不确定升级错误。

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

此处的最终目标是在超时用户尝试发送消息时将其重定向到登录页面。现在,如果超时的用户发送消息,当他们点击发送时消息不会显示,也不会向用户说明原因。

pro*_*ils 5

“未授权的连接尝试被拒绝”作为reject_unauthorized_connection呼叫的直接结果发生。

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

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