satococoa's blog

主にサーバーサイド、Web 系エンジニアのブログです。Go, Ruby, React, GCP, ...etc.

SocketStreamのデモを動かそう

西村賢(@knsmr)さんの記事を読んで、面白そう!と思い、早速デモを動かしてみました。
Rails Hub情報局: Node.jsに強烈に個性的な「SocketStream」が登場!

デモはgithubリポジトリから3つほどリンクされています。

とりあえず動かしながら、特徴っぽいところを自分なりに書いてみます。
動かし方については、Mac + Homebrewしか想定していません。というか自分の環境しかわかりません。
あと、Node(Node.js), npm, gitは入っている前提で。
他の環境で動かした方はぜひ教えてください。リンクします。

最初にSocketStream自身をグローバルにインストールしておきましょう。

$ npm install socketstream -g

Coffee-Scriptとか、Socket.ioとかもごっそり入ります。

SocketChat

WebSocketを使ったチャット。app/client/app.coffeeからSS.server.app.sendMessageのようにクライアントからサーバーのメソッドを直接呼んでいる(ように書ける)ところがポイントかな?

動かし方

まず、Redisをインストールしていない人はインストール。

$ brew install redis
$ mkdir -p ~/Library/LaunchAgents
$ cp /usr/local/Cellar/redis/2.2.10/io.redis.redis-server.plist ~/Library/LaunchAgents/
$ launchctl load -w ~/Library/LaunchAgents/io.redis.redis-server.plist

mkdir -p以降は、brew installが終わったときに自動的に案内が出ますので、言われるとおりに従えばOK。

蛇足
バージョンアップのときにも、起動用の.plistをコピーしてlaunchctlやり直す必要がありますが、バージョンアップの時に出る案内を見逃さなければ大丈夫。見逃しても $ brew info redis で再度見られます。 /蛇足

では動かします。

$ git clone https://github.com/addyosmani/socketchat.git
$ cd socketchat
$ npm install
$ mkdir public/assets # directoryが無いよ、って次の手順で言われたので。
$ socketstream s
$ open http://localhost:3000/

はい、終わりです。

ここでherokuにデプロイしようと、小一時間ほど試したのですがちょっとわからなかったのでパス。
具体的には、heroku上で動かすにはprocess.env.PORTでアプリケーションを動かすPORTを取得するのですが、socketstreamではconfig/app.jsonのような.jsonでその辺の設定をするようで、それを動的に取り出す方法がわかりませんでした。

Dashboard

Widgetを設定し、配置できます。APIからWidgetの中身を操作できるようになっています。
APIから操作し、それがリアルタイムにWidgetに反映されるというのがポイント。(多分)

動かし方

MongoDBをいれていない場合は以下。

$ brew install mongodb
$ mkdir -p ~/Library/LaunchAgents
$ cp /usr/local/Cellar/mongodb/1.8.2-x86_64/org.mongodb.mongod.plist ~/Library/LaunchAgents/
$ launchctl load -w ~/Library/LaunchAgents/org.mongodb.mongod.plist

では動かします。

$ git clone https://github.com/paulbjensen/socketstream_dashboard_example
$ cd socketstream_dashboard_example
$ npm install
$ socketesteam s

以上

SocketRacer

レースゲームです。
チャット機能や衝突判定などにのメインロジックにCoffeeScriptを使っているのが売りらしいですが、
すごいんですけれどもsocketstreamならではの売りがちょっとよくわかりませんでした。しっかりソースも追っていません。

見所をどなたか教えてください。

動かし方
$ git clone https://github.com/alz/socketracer.git
$ cd socketracer
$ npm install
$ socketstream s

以上

まとめ

公式のREADMEが充実しているので、ひと通り呼んでサンプル作ってみたいと思います。
対応ブラウザは限定されてしまうかもしれませんが、注目に値するフレームワークではないでしょうか。