Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WebSocketの圧縮機能とSocket.IO
Search
Naoyuki Kanezawa
February 10, 2015
Technology
5
8.7k
WebSocketの圧縮機能とSocket.IO
websocketのpermessage-deflate extensionについて
Naoyuki Kanezawa
February 10, 2015
Tweet
Share
More Decks by Naoyuki Kanezawa
See All by Naoyuki Kanezawa
Introducing Now and Next.js
nkzawa
12
5.4k
Socket.IO 1.0 Client for Javaの紹介
nkzawa
5
1.7k
Socket.IO 1.0の変更点・内部的な話
nkzawa
20
9.2k
Other Decks in Technology
See All in Technology
OSMnx Galleryの紹介
mopinfish
0
150
Slackひと声でブログ校正!Claudeレビュー自動化編
yusukeshimizu
3
180
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
4
1.5k
エンジニアが組織に馴染むために勉強会を主催してチームの壁を越える
ohmori_yusuke
2
120
Oracle Database オプティマイザ・ヒントの活用
oracle4engineer
PRO
1
140
iOS/Androidで無限循環Carousel表現を考えてみる
fumiyasac0921
0
130
大規模PaaSにおける監視基盤の構築と効率化の道のり
lycorptech_jp
PRO
0
180
Data Hubグループ 紹介資料
sansan33
PRO
0
1.7k
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.6k
Azure Developer CLI と Azure Deployment Environment / Azure Developer CLI and Azure Deployment Environment
nnstt1
1
120
[zh-TW] DevOpsDays Taipei 2025 -- Creating Awesome Change in SmartNews!(machine translation)
martin_lover
1
650
実践Kafka Streams 〜イベント駆動型アーキテクチャを添えて〜
joker1007
0
150
Featured
See All Featured
Making Projects Easy
brettharned
116
6.2k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Stop Working from a Prison Cell
hatefulcrawdad
269
20k
BBQ
matthewcrist
88
9.7k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
4 Signs Your Business is Dying
shpigford
183
22k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.4k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.6k
Transcript
WebSocketの圧縮機能と Socket.IO 2/10 Node学園#15
ID: nkzawa socket.io コミッター
最近 ws モジュールに permessage-deflate extension を実装しました
wsモジュール nodeのデファクトwebsocket server/client socket.ioでも使用している
古くからあるissueを解決 ws#34 3年前 socket.io#1148 2年前
None
None
permessage-deflate とは
メッセージデータを deflate 圧縮する WebSocketの拡張
HTTPでいうところのgzip圧縮
None
None
permessage-deflate vs http compression
最も重要な違い http: レスポンスにのみ適用 websocket: 双方向
圧縮パラメータ http: 圧縮データのheaderに含める websocket: ハンドシェイク時に交換
windowBits: ウィンドウ・サイズ noContextTakeOver: コンテキストを引き継ぐかどうか
Context Takeover 各メッセージを同一コンテキストで圧縮すること で圧縮率を改善
None
残念なお知らせ
現状Chromeのみサポート ( FireFoxはv37から )
ブラウザでは設定変更ができない JSのWebSocket APIにインターフェースがないため、 常に有効かつデフォルト値で動作する。
謝辞
この機能に関連するNodeの脆弱性を、 @jovi0608 (Shigeki Ohtsu) さん に直していただいたおかげで、 無事リリースできました!m(__)m
socket.io では
次バージョン (v1.4) でサポートされます。 (そもそもsocket.ioのために実装した)
• 圧縮がデフォルトで有効 • polling時はhttp圧縮 • メッセージ毎にon/offを切り替え可能
var socket = io({ perMessageDeflate: true, httpCompression: true }); socket.compress(false).emit(‘woot’);
まとめ
• 地味な機能だけど、パフォーマンス改善にイ ンパクトは大きいはず! • Socket.IOでも近いうちにサポート!