QA@IT

websocketのプロセス起動中にすぐに落ちてしまう。 (Errno::ECONNREFUSED) (Redis::CannotConnectError)

12547 PV

railsでwebsocketを使ってカンタンなwebアプリケーションを作っています。
--- rails 4.2

  • websocket_rails(https://github.com/websocket-rails/websocket-rails)
  • unicorn --- サーバ環境
  • redis
  • nginx でwebアプリケーションを組んでいます。
  • AWS上に環境を構築していますが、うまく動かすことが出来ずご教授ください。

問題
rake websocket_rails:start_serverで起動したプロセスが、途中迄は動くのだがwebアプリ操作中におちてしまう。

webrickで開発している時は問題なく行えたが、サーバをunicornにしたため。
websocket_railsをstandaloneモードで実行する必要がありました。
Standalone Server Mode · websocket-rails/websocket-rails Wiki https://github.com/websocket-rails/websocket-rails/wiki/Standalone-Server-Mode
ログを追ってみると、websocket_rails.logで redis connectionのエラーを見つけました。
(Errno::ECONNREFUSED) (Redis::CannotConnectError)
特定の操作をしたら落ちる分けではないのですが、chat_controllerの中でWebsocketRailsを呼び出している時に起きやすいかなと思います。 落ちる原因を特定できず困っている現状です。

websocketはrailsのセッティング,

WebsocketRails.setup do |config|
  config.standalone = true
  config.standalone_port = 3001
end

原因と思われる箇所、requestの処理::

class ChatController < WebsocketRails::BaseController
  def new_message
        WebsocketRails[:user].trigger(:new_message , {:post => post})
        WebsocketRails[current_user.id.to_s].trigger(:notification , {:type => :system})
  end

操作: pc画面からwebsocketをつなぎチャットの用な物を操作する。

情報量が少なく申し訳ありませんが、僕も何が原因なのか分かっていない状況です。
どこを調べた方が良いかなど、手がかりでもいいのでなにか教えて頂けると幸いです。

回答

GitHub issue で同様の事象を見つけました。
https://github.com/websocket-rails/websocket-rails/issues/313
この人は「redis-rb のバージョンを固定することで回避した」と書いているので、Gemfile に以下の行を追加して bundle update してみるとどうでしょうか。

gem 'redis', '3.2.0'
編集 履歴 (0)
  • 参考になりました -

ありがとうございます! 試してみたいと思います。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。