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.1k
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.2k
Socket.IO 1.0 Client for Javaの紹介
nkzawa
5
1.6k
Socket.IO 1.0の変更点・内部的な話
nkzawa
20
8.9k
Other Decks in Technology
See All in Technology
KTC_DBRE.pdf
_awache
0
290
データ品質をコード化! LINEヤフーのMLOpsを最適化する "ACP Data Quality" の紹介
lycorptech_jp
PRO
2
150
20240321_生成AI時代のDevOps
kzkmaeda
2
610
技育祭2024春 LT Finatextホールディングス
kevinrobot34
1
160
OpenTelemetry実践 はじめの一歩
taxin
0
310
技術イベントはなんとかひねり出す 日経の技術広報の取り組み/techpr3
nishiuma
0
220
BDD(Cucumber)コミュニティが無料提供しているコンテンツの紹介と現在起きている危機
nihonbuson
4
730
匠MethodとRDRAとICONIXとDDDで実現する一気通貫オブジェクト指向開発
haru860
4
2k
8週連続ウェビナー_イチから学ぶFivetran
cmsuzu
0
160
Elementaryを用いたデータ品質の可視化とデータ基盤の運用改善
10xinc
6
1.4k
エバンジェリスト活動を7年やってきて見えてきた、コミュニティとエバンジェリストの関係
soracom
PRO
1
200
大規模なアジャイル開発の現場と技術負債 / Technical Debt
yoshiitaka
20
4k
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
10
830
Building Flexible Design Systems
yeseniaperezcruz
317
37k
Fantastic passwords and where to find them - at NoRuKo
philnash
35
2.4k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Documentation Writing (for coders)
carmenintech
59
3.8k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.2k
The Pragmatic Product Professional
lauravandoore
24
5.7k
Thoughts on Productivity
jonyablonski
57
3.8k
Building Effective Engineering Teams - LeadDev
addyosmani
25
1.8k
Optimising Largest Contentful Paint
csswizardry
7
2.3k
Clear Off the Table
cherdarchuk
82
310k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
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でも近いうちにサポート!