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
160
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
4.5k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.3k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
270
Removing Corepack
yosuke_furukawa
PRO
9
1.7k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
2.9k
Strip Types と Storage
yosuke_furukawa
PRO
4
440
Module Harmony について
yosuke_furukawa
PRO
3
1.8k
LTのやり方
yosuke_furukawa
PRO
16
2.7k
Other Decks in Programming
See All in Programming
Inside of Swift Export
giginet
PRO
1
160
コードとあなたと私の距離 / The Distance Between Code, You, and I
hiro_y
0
200
AkarengaLT vol.38
hashimoto_kei
1
130
他言語経験者が Golangci-lint を最初のコーディングメンターにした話 / How Golangci-lint Became My First Coding Mentor: A Story from a Polyglot Programmer
uma31
0
470
Go言語はstack overflowの夢を見るか?
logica0419
0
650
TFLintカスタムプラグインで始める Terraformコード品質管理
bells17
2
480
Devvox Belgium - Agentic AI Patterns
kdubois
1
150
Blazing Fast UI Development with Compose Hot Reload (droidcon London 2025)
zsmb
0
390
SwiftDataを使って10万件のデータを読み書きする
akidon0000
0
250
CSC305 Lecture 12
javiergs
PRO
0
240
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
570
品質ワークショップをやってみた
nealle
0
650
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
630
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Practical Orchestrator
shlominoach
190
11k
Bash Introduction
62gerente
615
210k
Side Projects
sachag
455
43k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Raft: Consensus for Rubyists
vanstee
140
7.2k
The Cult of Friendly URLs
andyhume
79
6.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
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ʹͤͨ΄͏͕ྑͦ͞͏ɻ