WebSocket / Heroku

WebSocketもHerokuも話題になった当時、それぞれちょっと試しただけでしたが、モバイル環境でリアルタイム通信するときにとても強力な組み合わせであることを最近改めて感じます。
WebSocketは、ローカルでテストサーバ(nodejs)立てても、何も広がりがないのですが、SSL対応でインターネット上のサーバ(Ruby)が使えるHerokuとなると、用途が一気に広がります。すでにやっておられる方も多いと思いますが、私もHerokuのWebSocketアプリを試してみました。

環境: Ubuntu 15.10

apt-get install ruby
apt-get install ruby-dev
apt-get install openssl
apt-get install libssl-dev
apt-get install bundler

参考: https://devcenter.heroku.com/articles/getting-started-with-ruby#set-up

wget -O- https://toolbelt.heroku.com/install-ubuntu.sh | sh
heroku login (登録アカウントのメールアドレス、パスワードを入力)

参考: https://devcenter.heroku.com/articles/ruby-websockets

git clone https://github.com/heroku-examples/ruby-websockets-chat-demo.git
cd ruby-websockets-chat-demo
vi Gemfile (「ruby “2.1.5”」に 変更)
vi middlewares/chat_backend.rb (Redisを使わないように変更)
sudo gem install puma -v ‘2.6.0’
bundle install –path vender/bundle
git commit -m “init”
heroku create
git push heroku master

ローカルでサーバを起動する場合、
git push heroku master
のかわりに、

bundle exec rackup

このとき、以下のクラスを追加する必要がありました。
参考: https://github.com/jeremyevans/roda/issues/44

Redisを使わないように変更したchat_backend.rb (参考サイトに説明あり)

Webブラウザの他に、コマンドラインから起動するWebSocketクライアントもテストしてみました。
参考: http://shokai.org/blog/archives/7223

sudo gem install websocket-client-simple

URLとws.sendで送るメッセージをHerokuサンプルに合わせるためJSON形式にしただけであとは参考サイトのままです。

実行結果
heroku