Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
170
Node.js, Deno, Bun 最新動向とその所感について
yosuke_furukawa
PRO
10
4.7k
Welcome JSConf.jp 2024
yosuke_furukawa
PRO
1
4.4k
tc39 x jsconf.jp Panel Discussion 2024
yosuke_furukawa
PRO
0
280
Removing Corepack
yosuke_furukawa
PRO
9
1.7k
JavaScript Runtime とはなにか
yosuke_furukawa
PRO
15
2.9k
Strip Types と Storage
yosuke_furukawa
PRO
4
450
Module Harmony について
yosuke_furukawa
PRO
3
1.8k
LTのやり方
yosuke_furukawa
PRO
16
2.8k
Other Decks in Programming
See All in Programming
チーム開発の “地ならし"
konifar
8
7k
レイトレZ世代に捧ぐ、今からレイトレを始めるための小径
ichi_raven
0
490
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
170
【CA.ai #3】ワークフローから見直すAIエージェント — 必要な場面と“選ばない”判断
satoaoaka
0
180
データファイルをAWSのDWHサービスに格納する / 20251115jawsug-tochigi
kasacchiful
2
110
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
310
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
460
[SF Ruby Conf 2025] Rails X
palkan
0
410
スタートアップを支える技術戦略と組織づくり
pospome
8
14k
全員アーキテクトで挑む、 巨大で高密度なドメインの紐解き方
agatan
8
18k
Evolving NEWT’s TypeScript Backend for the AI-Driven Era
xpromx
0
260
俺流レスポンシブコーディング 2025
tak_dcxi
13
7.2k
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Producing Creativity
orderedlist
PRO
348
40k
Designing for Performance
lara
610
69k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Navigating Team Friction
lara
191
16k
Embracing the Ebb and Flow
colly
88
4.9k
Six Lessons from altMBA
skipperchong
29
4.1k
Why Our Code Smells
bkeepers
PRO
340
57k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.2k
What's in a price? How to price your products and services
michaelherold
246
12k
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ʹͤͨ΄͏͕ྑͦ͞͏ɻ