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
go-socket.io
Search
Yosuke Furukawa
PRO
August 09, 2014
Programming
6
5.6k
go-socket.io
golangのsocket.io実装を使ってパフォーマンスを取ってみた話
Yosuke Furukawa
PRO
August 09, 2014
Tweet
Share
More Decks by Yosuke Furukawa
See All by Yosuke Furukawa
デザインシステムが必須の時代に
yosuke_furukawa
PRO
2
190
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
4.9k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.5k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
300
Removing Corepack
yosuke_furukawa
PRO
9
1.8k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
3k
Strip Types と Storage
yosuke_furukawa
PRO
4
470
Module Harmony について
yosuke_furukawa
PRO
4
1.8k
LTのやり方
yosuke_furukawa
PRO
16
2.9k
Other Decks in Programming
See All in Programming
CSC307 Lecture 08
javiergs
PRO
0
670
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
300
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
1.1k
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
210
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
Data-Centric Kaggle
isax1015
2
770
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
650
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
130
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
560
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
100
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
460
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
96
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Building AI with AI
inesmontani
PRO
1
690
Build your cross-platform service in a week with App Engine
jlugia
234
18k
YesSQL, Process and Tooling at Scale
rocio
174
15k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
Design in an AI World
tapps
0
140
Six Lessons from altMBA
skipperchong
29
4.1k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Transcript
HPTPDLFUJP !ZPTVLF@GVSVLBXB
@yosuke_furukawa Node.jsϢʔβʔάϧʔϓද / DeNAॴଐ
NZXPSLT SFBMUJNFJOUFSBDUJWFͳήʔϜΛ࡞Δ ੑೳվળ ϑϩϯτΤϯυͷ։ൃޮΛ্͛Δ͜ͱ
(PMBOHNFFUTTPDLFUJP
TPDLFUJPJT SFBMUJNFMJCSBSZ جຊXFCTPDLFUΛ͏͕ɺXFCTPDLFU͕ܨ͕Β ͳ͍ڥͰMPOHQPMMJOHʹΓସ͑ͯ͘ΕΔ ࠷ۙWʹͳΓɺCJOBSZରԠɺॳظଓߴԽ ͕ߦΘΕͨ
TPDLFUJPW ৄ͘͠ɺ4PDLU*0հΛʜ IUUQZPTVLFGVSVLBXBIBUFOBCMPHDPNFOUSZ
ͦΜͳTPDLFUJPWʹ ࠷ۙHPMBOH࣮͕
HPPHPMMFFHPTPDLFUJP །ҰͷWରԠ͞Ε͍ͯΔ HPMBOHͰॻ͔ΕͨTPDLFUJP
%&.0 JNBHFTUSFBNJOH IUUQ IUUQ
ॻ͍ͨίʔυ // NewServerͰαʔόʔΛinstanceԽ server, _ := socketio.NewServer(nil) // On(“connection”), On(“image”)ͱ͍͏ײ͡
server.On("connection", func(so socketio.Socket) { so.Join("chat") so.On("image", func(msg interface{}) { m := &message{ Id: so.Id(), Blob: msg, } res, _ := json.Marshal(m) so.BroadcastTo("chat", "image", string(res)) }) so.On("disconnection", func() { m := &message{ Id: so.Id(), } res, _ := json.Marshal(m) so.BroadcastTo("chat", "leave", string(res)) }) })
ॻ͍ͨίʔυ // NewServerͰαʔόʔΛinstanceԽ server, _ := socketio.NewServer(nil) // On(“connection”), On(“image”)ͱ͍͏ײ͡
server.On("connection", func(so socketio.Socket) { so.Join("chat") so.On("image", func(msg interface{}) { m := &message{ Id: so.Id(), Blob: msg, } res, _ := json.Marshal(m) so.BroadcastTo("chat", "image", string(res)) }) so.On("disconnection", func() { m := &message{ Id: so.Id(), } res, _ := json.Marshal(m) so.BroadcastTo("chat", "leave", string(res)) }) }) ଓऀશһʹCSPBEDBTU Χϝϥ͔Βͷը૾Λड͚ͯ
ॻ͍ͨίʔυ // NewServerͰαʔόʔΛinstanceԽ server, _ := socketio.NewServer(nil) // On(“connection”), On(“image”)ͱ͍͏ײ͡
server.On("connection", func(so socketio.Socket) { so.Join("chat") so.On("image", func(msg interface{}) { m := &message{ Id: so.Id(), Blob: msg, } res, _ := json.Marshal(m) so.BroadcastTo("chat", "image", string(res)) }) so.On("disconnection", func() { m := &message{ Id: so.Id(), } res, _ := json.Marshal(m) so.BroadcastTo("chat", "leave", string(res)) }) }) ΠϯλϑΣʔεΛ/PEFKTʹدͤͯͯɺ 4PDLFU*0Λͬͨ͜ͱ͕͋ΔਓͳΒ؆୯ʹ͑Δ ଓऀશһʹCSPBEDBTU Χϝϥ͔Βͷը૾Λड͚ͯ
1FSGPSNBODF
݅ .BD#PPL1SP $16()[*OUFM$PSFJ .FNPSZ(# HPTPDLFUJPWTTPDLFUJP ଓ͕Ͱͨ͘͞ΜૹΔ߹ͱ ଓ͕ͨ͘͞Μ͋ͬͯɺ୯ൃͷϦΫΤετ͢Δ߹Ͱ࣮ ߦ
͏গ͠ࡉ͔͍݅ (0."9130$ίΞʹઃఆ /PEFKTͰDMVTUFSΘͣ ͏ͱ3FEJTඞ ཁͩ͠ɺएׯ໘ (PW /PEFW
None
TPDLFUJPͷํ͕ૣ͍
ଓ͕ଟ͍࣌
ʊਓਓਓਓਓਓਓਓਓਓਓਓʊ ʼɹHPTPDLFUJPؼͬͯ͜ͳ͍ɹʻ ʉ:?:?:?:?:?:?:?:?:?:?:ʉ
͓ർΕ༷Ͱͨ͠ɻɻɻ ʊਓਓਓਓਓਓਓਓਓਓਓਓʊ ʼɹHPTPDLFUJPؼͬͯ͜ͳ͍ɹʻ ʉ:?:?:?:?:?:?:?:?:?:?:ʉ
·ͱΊ
·ͱΊ XFCTPDLFUͱMPOHQPMMJOHΛΓସ͑ͯ͘ΕΔϥΠϒϥ ϦͰ͋ΔHPTPDLFUJPΛࢼͯ͠Έͨ ͜ΕΛར༻͢ΔͱΠϯλϥΫςΟϒͳXFCΛHPMBOHͰ ࡞Δ͜ͱՄೳ ͨͩ͠ɺ/PEFKTͷํ͕·ͩੑೳྑ͍ʢࠓޙʹظʣ ಉ࣌ଓΛଟ͘͢Δͱؼͬͯ͜ͳ͍ʜ ଓपΓͰό ά͕͋Γͦ͏
·ͱΊ XFCTPDLFUͱMPOHQPMMJOHΛΓସ͑ͯ͘ΕΔϥΠϒϥ ϦͰ͋ΔHPTPDLFUJPΛࢼͯ͠Έͨ ͜ΕΛར༻͢ΔͱΠϯλϥΫςΟϒͳXFCΛHPMBOHͰ ࡞Δ͜ͱՄೳ ͨͩ͠ɺ/PEFKTͷํ͕·ͩੑೳྑ͍ʢࠓޙʹظʣ ಉ࣌ଓΛଟ͘͢Δͱܨ͕Βͳ͍ʜ ଓपΓͰόά ͕͋Γͦ͏ ͱ͍͏Θ͚Ͱ·ͩ͏ͷਏͦ͏ɻ
QVMMSFRJTTVFૹΖ͏ɻ
͓·͚ HPTPDLFUJPFNJUUFS͍ͬͯ͏ͭ࡞ͬͨɻ ͜ΕHPMBOHͷϓϩηε͔Β/PEFKTͰ࡞ΒΕ ͨTPDLFUJPʹଓ͢Δౕ ϞνṷͰɺಉ࣌ଓ͕ଟ͘ͳΔࣄ͕͋Δ ͳΒTPDLFUJPʹͤͨ΄͏͕ྑͦ͞͏ɻ