Почему ActionCable постоянно пытается обновить соединение, когда не может найти вошедшего в систему пользователя - PullRequest
0 голосов
/ 21 декабря 2018

Rails 5.2.1

Маршруты:

    Rails.application.routes.draw do

      mount ActionCable.server => '/cable'
.
.
.

У меня есть следующий код в app / channel / application_cable / connection.rb

module ApplicationCable
  class Connection < ActionCable::Connection::Base

    identified_by :current_user

        def connect
          self.current_user = find_verified_user
        end

        private

        def find_verified_user
          if verified_user = env['warden'].user
            verified_user
          else
            logger.add_tags 'ActionCable', "The user is not found. Connection rejected."  
            reject_unauthorized_connection
          end
        end
      end
    end

Я заметилчто, когда у меня нет вошедшего в систему пользователя, журналы сервера выглядят следующим образом:

Started GET "/cable" for 127.0.0.1 at 2018-12-21 14:37:05 +0700
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2018-12-21 14:37:05 +0700
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
[ActionCable] [The user is not found. Connection rejected.] An unauthorized connection attempt was rejected
[ActionCable] [The user is not found. Connection rejected.] Failed to upgrade to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
[ActionCable] [The user is not found. Connection rejected.] Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-12-21 14:37:05 +0700
[ActionCable] [The user is not found. Connection rejected.] Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-12-21 14:37:05 +0700
Started GET "/cable" for 127.0.0.1 at 2018-12-21 14:37:27 +0700
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2018-12-21 14:37:27 +0700
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
[ActionCable] [The user is not found. Connection rejected.] An unauthorized connection attempt was rejected
[ActionCable] [The user is not found. Connection rejected.] Failed to upgrade to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
[ActionCable] [The user is not found. Connection rejected.] Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-12-21 14:37:27 +0700
[ActionCable] [The user is not found. Connection rejected.] Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-12-21 14:37:27 +0700
Started GET "/cable" for 127.0.0.1 at 2018-12-21 14:37:49 +0700
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2018-12-21 14:37:49 +0700
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
[ActionCable] [The user is not found. Connection rejected.] An unauthorized connection attempt was rejected
[ActionCable] [The user is not found. Connection rejected.] Failed to upgrade to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
[ActionCable] [The user is not found. Connection rejected.] Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-12-21 14:37:49 +0700
[ActionCable] [The user is not found. Connection rejected.] Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-12-21 14:37:49 +0700
Started GET "/cable" for 127.0.0.1 at 2018-12-21 14:38:11 +0700

Правильно ли и обычное поведение ActionCable постоянно пытаться установить соединение, пока не найдет вошедшего в систему пользователя

1 Ответ

0 голосов
/ 26 декабря 2018

AFAIK, обновление не из-за не вошедшего в систему пользователя.Я полагаю, что это функция соединения WS (S), пытающегося получить рукопожатие через HTTP (S), а затем обновить себя.

Это поведение уровня вашего веб-сервера (Puma, Apache и т. Д.), А не уровня приложения (Rails, Sinatra и т. Д.).

...