WebSocket Protocol と Plack::Middleware::WebSocket
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

WebSocket Protocol と Plack::Middleware::WebSocket

on

  • 1,731 views

Kyoto.pm Tech Talks 02 での LT の発表資料です。 WebSocket プロトコルのことを軽く話しました。

Kyoto.pm Tech Talks 02 での LT の発表資料です。 WebSocket プロトコルのことを軽く話しました。

Statistics

Views

Total Views
1,731
Views on SlideShare
1,089
Embed Views
642

Actions

Likes
1
Downloads
2
Comments
0

2 Embeds 642

http://vividcode.hatenablog.com 635
http://webcache.googleusercontent.com 7

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

WebSocket Protocol と Plack::Middleware::WebSocket Presentation Transcript

  • 1. WebSocket Protocol とPlack Middleware 実装 id:nobuoka (@nobuoka)
  • 2. WebSocket って何?
  • 3. ● 双方向の通信プロトコル ● HTTP と同じく Application layer に属する ● 下の layer は TCP● Web アプリケーション用● HTTP を基にした既存の双方向 通信プロトコルの置き換えるため に設計された ● Ajax や Long polling を使わないように ● Comet などを置き換え
  • 4. ● プロトコル : RFC 6455 (IETF) ● 2011/12● クライアント側 API : 標準化作業中 (WHATWG, W3C)
  • 5. 既存の技術と比べて何が良いの? ↓ オーバーヘッドが小さい!!
  • 6. Client Server HTTP request HTTP response レスポンスを 遅らせる tComet : HTTP 通信を何度も行う (HTTP ヘッダはでかい)
  • 7. Client Handshake Server tWebSocket : 最初に接続を確立した後はヘッダの小さいフレームをやりとり
  • 8. WebSocket プロトコル概要
  • 9. 大きく分けて 2 つのフェーズ● Handshake ● 接続の確立 ● HTTP プロトコルの GET メソッド ● プロトコルを UPGRADE する● Frame のやりとり ● Control frame ● Data frame● 最後に close
  • 10. Opening HandshakeGET /chat HTTP/1.1Host: server.example.comUpgrade: websocketConnection: Upgrade... (略) ...HTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: Upgrade... (略) ... ● HTTP request と response で接続確立 (上記例) ● HTTP 接続に使用した TCP ソケットをそのまま WebSocket のために使用
  • 11. Data framing● 各種データは frame 単位で送受信● Data Frames – Binary, Text● Control Frames – Close, Ping, Pong● ヘッダは最小 2 バイト (クライアント側からは 6 バイト)● A single-frame unmasked text message – 81 05 48 65 6C 6C 6F (contains “Hello”)
  • 12. 詳しくは RFC で!! → RFC 6455
  • 13. 困ったところ ↓ どの web サーバーでも 使えるわけではない ブラウザはわりと対応してるFirefox, Chrome, Opera 12.50, IE 10, Safari 6
  • 14. WebSocket のサーバー側実装 Plack Middleware として書いた (不完全) Plack::Middleware::WebSockethttps://github.com/nobuoka/Plack-Middleware-WebSocket Twiggy で動作することを確認
  • 15. デモ ページ上をクリックするとクリック位置が WebSocket で やりとりされるというようなデモを行いました。 デモに使用したプログラムは URL にありますので 興味のある方はお試しください。https://github.com/nobuoka/presentation/tree/20120819-Kyoto.pm-2/master