Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
WebSocketの圧縮機能と Socket.IO 2/10 Node学園#15
Slide 2
Slide 2 text
ID: nkzawa socket.io コミッター
Slide 3
Slide 3 text
最近 ws モジュールに permessage-deflate extension を実装しました
Slide 4
Slide 4 text
wsモジュール nodeのデファクトwebsocket server/client socket.ioでも使用している
Slide 5
Slide 5 text
古くからあるissueを解決 ws#34 3年前 socket.io#1148 2年前
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
permessage-deflate とは
Slide 9
Slide 9 text
メッセージデータを deflate 圧縮する WebSocketの拡張
Slide 10
Slide 10 text
HTTPでいうところのgzip圧縮
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
permessage-deflate vs http compression
Slide 14
Slide 14 text
最も重要な違い http: レスポンスにのみ適用 websocket: 双方向
Slide 15
Slide 15 text
圧縮パラメータ http: 圧縮データのheaderに含める websocket: ハンドシェイク時に交換
Slide 16
Slide 16 text
windowBits: ウィンドウ・サイズ noContextTakeOver: コンテキストを引き継ぐかどうか
Slide 17
Slide 17 text
Context Takeover 各メッセージを同一コンテキストで圧縮すること で圧縮率を改善
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
残念なお知らせ
Slide 20
Slide 20 text
現状Chromeのみサポート ( FireFoxはv37から )
Slide 21
Slide 21 text
ブラウザでは設定変更ができない JSのWebSocket APIにインターフェースがないため、 常に有効かつデフォルト値で動作する。
Slide 22
Slide 22 text
謝辞
Slide 23
Slide 23 text
この機能に関連するNodeの脆弱性を、 @jovi0608 (Shigeki Ohtsu) さん に直していただいたおかげで、 無事リリースできました!m(__)m
Slide 24
Slide 24 text
socket.io では
Slide 25
Slide 25 text
次バージョン (v1.4) でサポートされます。 (そもそもsocket.ioのために実装した)
Slide 26
Slide 26 text
● 圧縮がデフォルトで有効 ● polling時はhttp圧縮 ● メッセージ毎にon/offを切り替え可能
Slide 27
Slide 27 text
var socket = io({ perMessageDeflate: true, httpCompression: true }); socket.compress(false).emit(‘woot’);
Slide 28
Slide 28 text
まとめ
Slide 29
Slide 29 text
● 地味な機能だけど、パフォーマンス改善にイ ンパクトは大きいはず! ● Socket.IOでも近いうちにサポート!