LoginSignup
5
4

More than 5 years have passed since last update.

Herokuでwebsocket-railsを利用する場合はRedisが必要

Last updated at Posted at 2016-03-19

概要

websocket-railsのサンプルアプリをherokuで動かそうとしてハマったのでメモ
多分websocket全般でそうなんではないか

ruby 2.2.2
rails 4.2.6
websocket-rails 0.7.0 712fd4e

(先に)結論

ローカルでは正常に動いている事が前提
以下は、参考URLに書いてある通り

1.Redisの有効化
heroku addons:add redistogo

2.Redisの接続先、パスワードを確認
herokuダッシュボード ⇒ 自分のアプリケーションのページ ⇒ Add-ons ⇒ Redis To Go
Generalに以下のように書いてある
redis://redistogo:”パスワード”@”RedisのURL”:”ポート”

3.websocket-railsにredis接続先を与える
vim config/initializers/websocket_rails.rb
config.redis_options = {:host => ’RedisのURL’, :port => ’ポート’, :user => 'redistogo', :password => ’パスワード’}
(ここで、ユーザ名は'redistogo'固定)

4.ディスパッチャのurlをlocalhostではなく、heroku上での自分のアプリ公開URLに変更 (RedisのURLではない)
var ws_rails = new WebSocketRails("自分のアプリ.herokuapp.com/websocket");

参考

[some tech talks :Deploy Rails Websocket App Into Heroku]

備考1

特にHerokuの構成について未だあまりよく分かっていないため、以下は推測を含む

HerokuでRedisが必要となる理由は、heroku dev centerによると、1アプリケーションでもdynoは複数に分かれる可能性があり、そうなった場合に異なるdyno同士で通信ができないため。
無料利用ではdynoは1台限定なのでは?という気もするが、とにかくRedisを介さないと動かなかった。

備考2

以前の記事で参考にしたwebsocketのサンプルは、上記参考URLがもとになっているようだ

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4