11

私は最近、Rails プロジェクトを Rails4 から 5.0.0.beta3 に切り替えて、素晴らしい ActionCable を使用しました。

私の ActionCable サーバーはユニコーン内で実行されています。開発中はすべて正常に動作します。生産では私が持っています

Started GET "/cable" for xxx.xxx.xxx.xxx at 2016-03-28 18:06:38 +0300
Started GET "/cable/" [WebSocket] for xxx.xxx.xxx.xxx at 2016-03-28 18:06
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
Registered connection (189772ff-6229-48f1-ae7f-d9a96ad3a6c3)
Finished "/cable/" [WebSocket] for xxx.xxx.xxx.xxx at 2016-03-28 18:06:35

そして、このメッセージはループで何度も繰り返されます。

これを処理するためにstackoverflowで多くのオプションを試しましたが、何も役に立ちません。私のnginx設定:

 upstream unicorn {
   server unix:/tmp/unicorn.my_app.sock fail_timeout=0;
 }

 server {
   server_name www.my_app.com;
   return 301 $scheme://my_app.com$request_uri;
 }

 server {
   listen 80 default deferred;
   server_name my_app.com;
   root /var/www/my_app/current/public;

   location ^~ /assets/ {
     gzip_static on;
     expires max;
     add_header Cache-Control public;
   }

   try_files $uri/index.html $uri @unicorn;
   location @unicorn {
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header Host $http_host;
     proxy_redirect off;
     proxy_pass http://unicorn;
   }

   location /cable {
     proxy_pass http://unicorn/cable;
     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;
   }

   error_page 500 502 503 504 /500.html;
   keepalive_timeout 5;
 }

リクエストが許可されていることを確認するために、初期化子で次のコードを一時的に使用しました。 ActionCable.server.config.disable_request_forgery_protection = true

私のcable.coffeeファイル

 @App ||= {}
 App.cable = ActionCable.createConsumer "/cable"

私のconfig/cable.ymlファイル

production:
 adapter: redis
 url: redis://localhost:6379/1

私はこの質問にあまり慣れていないので、どんな助けも素晴らしいでしょう。

4

3 に答える 3