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
Socket.IO Introduction
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
orisano
December 04, 2018
Technology
3.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Socket.IO Introduction
orisano
December 04, 2018
More Decks by orisano
See All by orisano
OSS Performance Tuning Tips
orisano
8
6.2k
Docker-Compose & BuildKit
orisano
4
1.1k
Container Build Talk
orisano
3
2.6k
dockerignore talk
orisano
2
7.3k
Better docker image+
orisano
6
6.6k
Profiling Go Application
orisano
11
8.1k
Multi-stage Builds Patterns & Practice
orisano
6
5.3k
better docker image
orisano
22
31k
the world of characters
orisano
8
1.5k
Other Decks in Technology
See All in Technology
本当の”仕事”を手放せる未来が見えた
mu7889yoon
0
190
時期が悪い!それでもRaspberry Piを買って遊んで活用するには / 20260627-osc26do-rpi-jikigawarui
akkiesoft
1
900
攻撃者がいなくてもAIエージェントはインシデントを起こす
nomizone
0
140
2026-06-24_人とAIの責務分離に基づく開発プロセスの提案.pdf
takahiromatsui
0
250
AIエージェントとPhysical AIが拓く製造業の変革(ハノーバーメッセリキャップ)
iotcomjpadmin
0
170
クラウドファンディング版StackChan 3体(4体)をインタラクティブな体験型作品にして展示もした話 / スタックチャンお誕生日会2026
you
PRO
0
240
40代で“やっとエンジニアになれた”――閉じた学びを開き、空の青さを知る / 20260628 Naoki Takahashi
shift_evolve
PRO
4
1.1k
GitHub Copilot運用のリアル ~AI Credit時代にどう向き合うか~
takafumisu2uk1
0
490
千葉での単身赴任からAWSをやり続け、千葉に戻ってきた話
yama3133
1
130
【FinOps】データドリブンな意思決定を目指して
z63d
2
490
打造你的 AI 工作流:Agent Skill + MCP 實戰工作坊
appleboy
0
170
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
300
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
500
The browser strikes back
jonoalderson
0
1.3k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Why Our Code Smells
bkeepers
PRO
340
58k
How to make the Groovebox
asonas
2
2.2k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
210
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
190
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
450
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
870
Side Projects
sachag
455
43k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Transcript
Socket.IOʹೖͨ͠ @orisano
Socket.IOͬͯΔਓ
Socket.IOͬͨ͜ͱ͋Δਓ
Socket.IOΕΔਓ
ΰʔϧ Socket.IO͕ΕΔΑ͏ʹͳΔ
ͦͦSocket.IOͱ
Socket.IO • FEATURING THE FASTEST AND MOST RELIABLE REAL-TIME ENGINE
• ૣͯ͘৴པͰ͖ΔϦΞϧλΠϜΤϯδϯ • ϦΞϧλΠϜͰํͷevent-basedͳ௨৴
Socket.IO • Node.jsͰ࣮͞Ε͍ͯΔ • ࠓversion 2.0 • ϒϥβͰϦΞϧλΠϜ௨৴ͳΒ͜Εͱ͍͏ • ΩϥʔΞϓϦͩͬͨ
Α͋͘Δޡղͱͯ͠ Socket.IO == WebSocket
Socket.IO !== WebSocket
Socket.IO • Ή͠ΖWebSocketͷରԠঢ়گ͕ѱ͔ͬͨ࣌ظ ʹಉ༷ͷ͜ͱΛ͢ΔͨΊͷͷͩͬͨ • TransportWebSocketͰͳͯ͘Α͍ • TransportEngine.IOͰநԽ͞Ε͍ͯΔ
Engine.IO • Socket.IOͷͨΊʹ࡞ΒΕͨRealtime Engine • ௨৴ϨΠϠʔ·Ͱ͔͠ݟͳ͍ • eventͱ͔ͦ͏͍͏ػೳଘࡏ͠ͳ͍
Engine.IO • WebSocket [packet] • Polling [payload] • XMLHttpRequest •
JSONP • MUST support three transport
8FC4PDLFU 9.-)UUQ3FRVFTU +40/1 &OHJOF*0 4PDLFU*0 #SPXTFS$MJFOU
͑ͬ໘ष͞ ࠓͷ࣌ WebSocketͰ͍͍Ͱ͠ΐ
https://blog.jxck.io/entries/ 2016-08-22/websocket- connectivity.html
·ͱΊ • RFCʹଇͬͨWebSocketIE11͔Β • Connection: UpgradeΛམͱ͢ϛυϧϘοΫε • HTTPͰ࣌ؒுΓͬͺͳ͠ͷίωΫγϣϯΛ ΔϛυϧϘοΫε
·ͱΊ • RFCʹଇͬͨWebSocketIE11͔Β • Connection: UpgradeΛམͱ͢ϛυϧϘοΫε • HTTPͰ࣌ؒுΓͬͺͳ͠ͷίωΫγϣϯΛ ΔϛυϧϘοΫε IEͬͯͳΜͰ͔͢ʁ
·ͱΊ • RFCʹଇͬͨWebSocketIE11͔Β • Connection: UpgradeΛམͱ͢ϛυϧϘοΫε • HTTPͰ࣌ؒுΓͬͺͳ͠ͷίωΫγϣϯΛ ΔϛυϧϘοΫε IEͬͯͳΜͰ͔͢ʁ
҉߸Խ͢Εͳ͍Ͱ͢. wssΛ͏.
·ͱΊ • RFCʹଇͬͨWebSocketIE11͔Β • Connection: UpgradeΛམͱ͢ϛυϧϘοΫε • HTTPͰ࣌ؒுΓͬͺͳ͠ͷίωΫγϣϯΛ ΔϛυϧϘοΫε IEͬͯͳΜͰ͔͢ʁ
҉߸Խ͢Εͳ͍Ͱ͢. wssΛ͏. Ͳ͏ʹͳΒͳ͍
·ͱΊ • ࣮ࡍͲͷఔଘࡏ͢Δͷ͔Θ͔Βͳ͍ • ͍ΜͨʔͶͬͱ͍͠ͷͰଞͷݪҼ͋Δ • ϦΞϧλΠϜ௨৴͕؊Ͱ͍ΖΜͳڥͷϢʔβ ʹͬͯΒ͍͍ͨ߹Socket.IO
େઢ͠·͕ͨ͠
Socket.IOΛΔʹ
8FC4PDLFU 9.-)UUQ3FRVFTU +40/1 &OHJOF*0 4PDLFU*0 #SPXTFS$MJFOU
ਓ͕ؒ WebSocketΔͷ “””͍͠”””
ͦΕΑΓ্ͷϨΠϠʔ ͱ͍͏͜ͱʹ͠·͢
8FC4PDLFU 9.-)UUQ3FRVFTU +40/1 &OHJOF*0 4PDLFU*0 #SPXTFS$MJFOU
·ͣEngine.IOΛΔ
Engine.IO • https://github.com/socketio/engine.io-protocol • ࠓrevision: 3 • ͘͢͝γϯϓϧͰ໋ྩ͕7छྨ͔͠ͳ͍ • <packet
type id>[data] ୯७ͳformat
Engine.IO • 0 open, αʔό͔Β࠷ॳʹૹΒΕͯ͘Δ • 1 close, அ͢Δͱ͖ʹૹΔ •
2 ping, ͪ͜Β͔ΒૹΔੜଘใࠂ • 3 pong, pingΛड͚औͬͨ࣌ʹαʔό͔Βฦͬͯ͘Δ • 4 message, σʔλΛૹड৴͢Δ࣌ʹ͏ • 5 upgrade, transportΛม͑Δ࣌ʹૹΔ • 6 noop, ͳʹ͠ͳ͍
git clone https://github.com/orisano/socketio-handson cd socketio-handson npm i npm run serve:eio
npm run conn:eio
Engine.IO • < 0******* // open • > 2 //
ping • < 3 // pong • > 4hello. engine.io // message • < 4reply:hello
͜ΕͰEngine.IOᘳ
͋ͱSocket.IO͕ΕΕ
Socket.IO • https://github.com/socketio/socket.io-protocol • ࠓrevision: 4 • ͘͢͝γϯϓϧͰ໋ྩ͕7छྨ͔͠ͳ͍ • formatͷৄࡉʹ͍ͭͯ͋·Γॻ͍ͯͳ͍
Socket.IO • socket.io-parserͷ࣮ΛݟΔ • <packet type id>[(attachments)-] [(namespace:/),][id][data] • ͏Μ,
simple
Socket.IO • 0 CONNECT, αʔό͔Β࠷ॳʹૹΒΕͯ͘Δ • 1 DISCONNECT, அ͢Δͱ͖ʹૹΔ •
2 EVENT, Πϕϯτ͕ى͖ͨ࣌ʹૹड৴͢Δ • 3 ACK,ಛఆͷύέοτʹରͯ͠ฦ৴͢Δ࣌ʹ͏ • 4 ERROR,Τϥʔ͕ى͖ͨ࣌ʹ͏ • 5 BINARY_EVENT, όΠφϦΛૹΔ࣌ͬͪ͜ • 6 BINARY_ACK, όΠφϦΛฦ࣌ͬͪ͢͜
npm run serve:sio npm run conn:sio
Socket.IO • > 0 // e:open • > 40 //
e:message s:connect • < 42[“message”,”hello”] // e:message s:event data • > 42[“reply”,”?hello”] // e:message s:event data • < 41 // e:message s:disconnect • < 42[“message”,”hello”] // e:message s:event data • < 40 // e:message s:connect • < 42[“message”,”hello”] // e:message s:event data • > 42[“reply”,”?hello”] // e:message s:event data
͜ΕͰSocket.IOᘳ
ͦͦ
ͳΜͰSocket.IOͷʁ
https://github.com/orisano/gomasio socket.io-clientͷgolang࣮Λ ࡞ͬͨͷͰએ