Node.jsによるPusherクローン「Keima」をリリースしました #codefirst
「えーpolling!? pollingが許されるのは小学生までだよねー、キャハハハ」というわけでpush通知にWebSocketをお使いのみなさま、こんにちは。
しかし、毎回、WebSocketを扱う機能を実装するのは、いくつかの理由で面倒ですよね!
- WebSocketは様々なバージョンがあるので、すべてに対応するのは面倒。
- 同様の理由で、個別のアプリで作り込んでしまうと、WebSocketのバージョンアップに追従するのが面倒。
- WebSocketは大抵別サーバになっているので、設定が面倒。
Heroku等のPaaSではWebSocketを使えないことが多い。(2015/1/23追記: HerokuはWebSocketをサポートするようになりました)
そこで、WebSocketによるpush通知に特化したWebサービス Keima を作成しました!
Keimaの概要
- ユーザが何かの操作をすることで、Webアプリの状態が更新される
- KeimaのAPIを叩き、更新内容を通知する
- Keimaが各種クライアントに更新内容をWebsocket等でリアルタイム通知する
Keimaの特徴
環境に応じてWebSocket, FlashSocket, XHR-Pollingが自動選択されます。*1
APIはREST+Javascriptライブラリなので、簡単に利用できます。またインタフェースは類似サービスであるPusherに合せてあるので、移行も簡単にできます。
Twitterアカウントさえあれば誰でも利用できます。
類似サービスとの比較
- Leader in realtime technologies| Pusher
- Build Realtime Apps & Take Websockets To The Next Level | PubNub
Keimaは類似のWebサービスであるPusherのクローンです。 相違点は下記の通りになります。
- node.js + mongodb + redisというベーシックな構成なのでNode.js用PaaSにデプロイが容易。(Node Ninja, Nodejitsuにて確認しています。)
- オープンソースなので社内ネットワーク等の閉じた環境でも利用できる。
ソースコードの入手・Node Ninjaへのデプロイ
ソースコードはGithubで管理(https://github.com/codefirst/keima)しています。MITライセンスですのでご自由にお使いください。
またNode Ninjaへのデプロイにも対応しています。
$ git clone git://github.com/codefirst/keima.git $ cd keima $ git remote add node-ninja node@xxx.xxx.xxx.xxx:repo $ git push node-ninja master
オマケ: 名前の由来
リアルタイム通知をするWebアプリケーションのハブになりたい → 羽生 → 将棋 → 桂馬 → Keima、って@mallowlabsさんが言ってました。
なおロゴはデザイン将棋の桂馬の駒を参考にしています。
*1:Socket.IOは神