Сбой Actioncable с ошибкой подключения WebSocket только в prod env - PullRequest
0 голосов
/ 11 июля 2019

Я создаю приложение чата обновления в реальном времени с Rails (режим API) и реагирую, используя следующие технологии.

1.rails 5.2.1 2.puma 3.12.0 3.ruby 2.4.6 4.nginx1.12.2 5.redis 4.0.10 6.aws эластичная боль

frontend/index.js

import ActionCable from 'actioncable'

ActionCable.createConsumer(`wss://myapp.com:3000/cable?authorization=${tokens['Authorization']}&firebaseUID=${tokens['FirebaseUID']}`)

config/environments/production.rb

 config.action_cable.url = 'wss://myapp.com/cable:3000'
 config.action_cable.allowed_request_origins = [ 'http://myapp.com', /http:\/\/myapp.*/, 'https://myapp.com', /https:\/\/myapp.*/ ]

nginx.conf


upstream puma {
   server unix:///srv/myapp/tmp/sockets/puma.sock;
}

location / {
   try_files $uri $uri/index.html $uri.html @webapp;
 }

location @webapp {
   proxy_read_timeout 300;
   proxy_connect_timeout 300;
   proxy_redirect off;
   proxy_set_header X-Forwarded-Proto $scheme;
   proxy_set_header Host $http_host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_pass http://puma;
 }



location /cable {
   proxy_pass http://puma/cable;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
}

config/cable.yml

production:
  adapter: redis
  url: ENV['ELASTIC_CACHE_URL']}  <= endpoint of elasticache(redis4.0)

Но я получаю следующую ошибку.

main.js: 89513 Соединение WebSocket с 'wss: // myapp.com: 3000 / cable 'не удалось: WebSocket закрывается до установления соединения

Может кто-нибудь дать мне совет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...