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.2k
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
9k
Other Decks in Technology
See All in Technology
プロダクト拡大フェーズでプロダクト検証サイクル効率化を目指す過程で見えたもの / Streamlining Product Validation in Growth Phase
kakehashi
6
5.7k
マイクロサービスの現場からプラットフォームエンジニアリングの可能性を探る!
abnoumaru
1
4.7k
RDS for Db2 はじめの一歩・作り方編 #1 /20240628-RDSforDb2-dojo
mayumihirano
0
220
Bring your app’s core features to users with App Intents とか App Intents 関連の要約
ryomm
1
280
予知保全利用を目指した外観検査AIの開発 〜画像処理AIを用いた外観画像に対する異常検知〜
sadynitro
0
220
[ABC2024Summer]Flutter UX Improvements + α
korodroid
0
320
Recap: Kotlin Language Features in 2.0 and Beyond (Michail Zarečenskij)
dalinaum
0
420
機械学習クラスタ コンテナネットワーキング BoF
pfn
PRO
1
160
2024年のRailsと自由について考える
takahashim
20
7.4k
20240626_PLATEAU_AWARD説明会
nokonoko1203
0
210
まずはパネル「Table」を使い倒してみよう@GrafanaMeetupJapan#2
rinchoku
1
320
What's is Bluesky
shinoharata
0
300
Featured
See All Featured
Infographics Made Easy
chrislema
238
18k
Embracing the Ebb and Flow
colly
80
4.3k
The Invisible Side of Design
smashingmag
294
50k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.2k
Practical Orchestrator
shlominoach
184
9.9k
Why Our Code Smells
bkeepers
PRO
331
56k
Building Flexible Design Systems
yeseniaperezcruz
322
37k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
128
32k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
143
44k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
19
7.1k
The World Runs on Bad Software
bkeepers
PRO
62
10k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
31
1.8k
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でも近いうちにサポート!