ElasticBeanstalk - это конфигурация балансировки нагрузки приложений.Это Ruby on Rails с Passenger, Puma и NGINX (стек Ruby AWS по умолчанию).
Я форсирую ssl, и у меня все работает отлично, за исключением веб-сокетов, которые, похоже, (заблокированы |отбрасываются | сломана).
Первая ошибка отображается в консоли: (URL-адрес - мой домен)
WebSocket connection to 'wss://<URL>/cable' failed: WebSocket is closed before the connection is established.
Этот запрос не выполняется с (OPCODE -1)
во внешнем интерфейсе.
При проверкеЖурналы сервера, у меня есть access.log
, который показывает:
/cable"499
, что не очень описательная ошибка.
И рельсы production.log
показывают:
Started GET "/cable/" [WebSocket] for 152.170.14.251 at 2018-05-28 21:01:27 +0000
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: upgrade, HTTP_UPGRADE: websocket)
Registered connection (Z2lkOi8vYXNlc29yLWFwcC9JZGVudGl0eS81:Z2lkOi8vYXNlc29yLWFwcC9Vc2VyLzI)
WebSocket error occurred: wrong number of arguments (given 2, expected 1)
Иногда я видел эту другую ошибку:
NoMethodError: undefined method `+' for nil:NilClass
File "/opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/websocket-driver-0.7.0/lib/websocket/driver/hybi.rb" line 11 in generate_accept
File "/opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/websocket-driver-0.7.0/lib/websocket/driver/hybi.rb" line 76 in initialize
File "/opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/websocket-driver-0.7.0/lib/websocket/driver.rb" line 160 in new
File "/opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/websocket-driver-0.7.0/lib/websocket/driver.rb" line 160 in rack
File "/opt/rubies/ruby-2.5.1/lib/ruby/gems/2.5.0/gems/actioncable-5.2.0/lib/action_cable/connection/client_socket.rb" line 47 in initialize
И этот файл показал, что ключ отсутствует.
Следуя этой ошибке, я обнаружил эту проблему:
Rails Issue
Это привело меня к этому окончательному файлу:
Файловая переменная, которая, кажется, отсутствует
Это, наконец, привело меня кэто конфигурации, которые могут отсутствовать:
socket.env
После долгих исследований я оказался в исходном коде гема и выглядит как кодировканекоторые символы дают сбой и создают странную строку, которую ActionCable не может проанализировать:
Открытая проблема в Github