Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Socket.io 1.0の話

5,560 views

Published on

東京node学園 2013/08/21

Published in: Technology
  • Be the first to comment

Socket.io 1.0の話

  1. 1. Socket.IO 1.0の話 2013/08/21 Node学園10時限目
  2. 2. 自己紹介 Twitter: @nkzawa GitHub: nkzawa ● 個人的にSocket.IO 1.0 ベースでアプリを開発 中。 ● Socket.IO関連のOSSをいくつか公開していま す。
  3. 3. Socket.IO 1.0の現在
  4. 4. Socket.IO 1.0の現在 ● githubのmasterブランチで開発されている。 ● 最近5ヶ月更新がない … ● 代わりに派生プロジェクトのengine.ioが更新さ れている。 ● 後方互換性はないが、0.9に近いAPIを持つ。 ● 機能的にはすでに全て揃っている(ように見え る)。
  5. 5. Socket.IO 1.0の現在 機能は揃っているが、不具合がいくつかあって、 githubのソースをインストールしても動かない。 → 修正したバージョンを公開してます。 https://github.com/nkzawa/socket.io $ npm install nkzawa/socket.io
  6. 6. Engine.IO
  7. 7. Engine.IO ● websocketやpollingなど、transportの違いを吸 収するライブラリ。 ● socket.io 1.0のベース。単体でも使える。 ● stable, production ready ● 接続安定性: engine.io > socket.io 0.9
  8. 8. 0.9と1.0の主な違い
  9. 9. プロトコル
  10. 10. 0.9のプロトコル ● 効率的なtransport順に接続を試みる。 (websocket → xhr-polling) ● コロン区切りのパケット。 5:::{"name":"foo","args":[1]}
  11. 11. 1.0のプロトコル ● 接続を確立するまでが早くて確実な順に接続を 試みる。接続後、効率的な方法にアップグレー ドする。(xhr-polling → websocket) ● パケットは、engine.ioのデータ部分に、socket. ioのメッセージがのるかたち。 42["foo",1] ※2以降がengins.ioデータで、socket.ioのメッセージ。
  12. 12. 1.0のプロトコル 問題点:後方互換性がないので、0.9向けのクライ アントライブラリは全て使えない。 → 1.0のJavaクライアント公開してます。 https://github.com/nkzawa/socket.io-client.java https://github.com/nkzawa/engine.io-client.java
  13. 13. Middleware
  14. 14. Middleware Authorizationの仕組みが廃止され、代わりに Express/Connectライクなmiddlewareレイヤが追 加。 io.use(function(socket, next) { // handshake時のServerRequestオブジェクト console.log(socket.request); // 引数にerrを渡すと接続を切れる next(); });
  15. 15. Middleware 問題点:標準でmiddlewareが付属していない。 → middlewareコレクションを公開中してます。 cookieParser, sessionとか。 https://github.com/nkzawa/socket.io-bundle
  16. 16. Adapter
  17. 17. Adapter ● Storeが廃止されて、同等の機能を持つ Adapterが追加。 ● インターフェイスがシンプルになって、責任範囲 が広くなった。 ● broadcastを行うと、Adapterに処理が委譲され る。独自のAdapterを実装して、broadcastの動 きをカスタマイズするとかできそう。
  18. 18. Adapter 問題点:0.9にあったRedisStoreに代わるものが付 属していない。 → サードパーティのライブラリがあります。 https://github.com/meltzerj/socket.io-redis https://github.com/mcollina/socket.io-adapters ※まともに動くか検証してません。
  19. 19. まとめ
  20. 20. まとめ ● 正式公開は近い!(願望) ● engine.ioのおかげで、接続の安定性が向上し ます。 ● middleware便利。 ● 1.0の採用もそろそろ検討しましょう。

×