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.5k
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.1k
Other Decks in Technology
See All in Technology
RubyでKubernetesプログラミング
sat
PRO
4
150
三菱電機で社内コミュニティを立ち上げた話
kurebayashi
1
340
.NET AspireでAzure Functionsやクラウドリソースを統合する
tsubakimoto_s
0
180
Goで実践するBFP
hiroyaterui
1
110
シフトライトなテスト活動を適切に行うことで、無理な開発をせず、過剰にテストせず、顧客をビックリさせないプロダクトを作り上げているお話 #RSGT2025 / Shift Right
nihonbuson
3
2k
駆け出しリーダーとしての第一歩〜開発チームとの新しい関わり方〜 / Beginning Journey as Team Leader
kaonavi
0
120
iPadOS18でフローティングタブバーを解除してみた
sansantech
PRO
1
100
JAWS-UG20250116_iOSアプリエンジニアがAWSreInventに行ってきた(真面目編)
totokit4
0
130
知っててうれしい SQL について
greendrop
0
130
AWS Community Builderのススメ - みんなもCommunity Builderに応募しよう! -
smt7174
0
150
When Windows Meets Kubernetes…
pichuang
0
290
今年一年で頑張ること / What I will do my best this year
pauli
1
210
Featured
See All Featured
The Invisible Side of Design
smashingmag
299
50k
Unsuck your backbone
ammeep
669
57k
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
Mobile First: as difficult as doing things right
swwweet
222
9k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Building Your Own Lightsaber
phodgson
104
6.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
860
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
350
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
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でも近いうちにサポート!