Прежде всего, спасибо за внимание к моему вопросу. И извините за мой сломанный Engli sh, так как я не являюсь носителем Engli sh. Пожалуйста, дайте мне знать, если вам когда-нибудь понадобится дополнительная информация или коды.
Что я пытаюсь
В настоящее время я работаю над приложением чата с использованием Action Cable на Ruby на Rails, который я использую AWS как инфраструктура, EC2 и Elasticache (Redis) и ALB.
Ошибка, которую я получил
На консоли не отображается ошибка.
Это журнал от production.log
Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"ChatRoomChannel\",\"chat_id\":1}", "data"=>"{\"text\":\"test\",\"chat_id\":1,\"user_id\":7,\"action\":\"chat\"}"}) [ArgumentError - invalid uri scheme '']: /var/www/myapp/shared/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:438:in `_parse_options' | /var/www/myapp/shared/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:83:in `initialize' | /var/www/myapp/shared/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis.rb:45:in `new' | /var/www/myapp/shared/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis.rb:45:in `initialize' | /var/www/myapp/shared/bundle/ruby/2.6.0/gems/actioncable-5.2.4.1/lib/action_cable/subscription_adapter/redis.rb:16:in `new'
Коды
environment / production.rb
config.action_cable.allowed_request_origins = [ 'https://myapp.com', /https:\/\/myapp.com.*/,'http://myapp.com', /http:\/\/myapp.com.*/ ]
config.action_cable.disable_request_forgery_protection = true
rout.rb
mount ActionCable.server => '/cable'
cable.yml
production:
adapter: redis
port: 6379
url: <%= ENV['REDIS_URL'] %>
ENV ['REDIS_URL'] является основной конечной точкой для Elasticache (redis)
location /cable {
proxy_pass http://app_server;
proxy_http_version 1.1;
proxy_set_header Upgrade websocket;
proxy_set_header Connection Upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Что я пробовал
Elasticache был связан с EC2
Другая информация
Ruby 2.6.3 Рельсы 5.2.4.1 AWS (EC2, Elasticache, ALB)