RailsでWebSocketアプリ使うときの注意

posted in: 製作日記 | 0

RailsでWebSocketを使ったアプリを作ろうとしたら色々とコケたので,そのときの注意事項を書いておきます.

 

Gemfileの編集

WebSocketを使うときはGemfileの適当なところに

gem ‘websocket’

と書く.

とこれだけで行けそうな雰囲気があるけど,現実はそんなに甘くなかった・・・

 

治らないエラー,落とすバージョン

うちのRoRの環境はnginx+unicornなので,そのままunicorn立ち上げたら色々怒られた.

グーグル先生に聞いたら”faye-websocket が悪さしとるからバージョンを落とした方がいいよ.”と言われたので,Gemfile.lock の方を変更

 

でも,エラーが治らない.というかエラーログみると明らかに違うところでコケてる

E, [2016-11-02T01:08:11.106797 #11365] ERROR — : exception while processing events: wrong number of arguments (given 0, expected 1) Backtrace:

エラーログをもうちょい見たら

em-synchrony-1.0.5

の文字があった.

他の人の色々見てみたらバージョン1.0.3だったりしたので,こっちも少し落としてみる.

Gemfile.lockの方でバージョンを指定すると”bundle update”したときに勝手に最新のに書き換えられるので,Gemfileの方でバージョンを固定することに.

 

最終的にこういうのを追記した.

# Use WebSocket
gem ‘websocket-rails’
gem ‘em-websocket’
gem ‘faye-websocket’, ‘0.10.0’
gem ‘em-synchrony’, ‘1.0.3’

2個めの’em-websocket’は要らないかも.(’websocket-rails’をbundle installしたときに勝手に入るかも)

という訳で無事解決!

 

今日の教訓

むやみに最新バージョンを使えばいいというものではない.

 

もう少ししたらWebSocketのデモアプリでも公開するかも.

一言残す!