動かない
websocketをいい感じにrailsで扱えるようにしてくれる、websocket-rails。
Gemfile
gem 'websocket-rails'
して、bundle installして云々。
導入記事を参考に写経してみたけれど、まったくうんともすんとも言わない。
logを見ると、
log/websocket_rails.log
I [2015-11-29 15:29:35.322] [ConnectionManager] Connection opened: #<Connection::93f2bb052bac280682f9>
I [2015-11-29 15:29:46.407] [ConnectionManager] Connection closed: #<Connection::93f2bb052bac280682f9>
こんな調子で、establishedになる前に、タイムアウトしてコネクションが張れてない。
ブラウザ側は、 ws://192.168.xx.xx:3000/websocket への接続に失敗しました。
とか言ってくる。
試したこと
- iptables OFFにしてみた。 -> 元からOFFだった
- VMWareの中のサーバーだったので、VMWareの中から繋いで試してみた。 -> だめっぽい
- webrickはwebsocketに対応してないかも? と思いthinにしてみた。 -> 変わらない
- standaloneモードで起動してみる。 -> やはり繋がらない。
- サンプル(https://github.com/84yeti/websocketTest)をcloneしてきて試した。 -> 動いたぞ!
なんで手元のプロジェクトでは動かないのか...ひたすらdiffを試す作業。
原因
原因は、faye-websocketの仕様変更のようだ。faye-websocket v0.10.0までなら動く。
まじかよ...
対処
よって
Gemfile
gem 'websocket-rails'
gem 'faye-websocket', '0.10.0'
たわごと
ライブラリ書くときは、ちゃんと依存バージョン書こうね!!!