Slide 1

Slide 1 text

WebSocket ͸ͲΕ͘Β͍ ௨͡Δͷ͔ͷ౷ܭ © Tsukuru Tanimichi (@ttanimichi), 2017 1

Slide 2

Slide 2 text

TL;DR • Jxck ͞Μͷϒϩά • Socket.IO ͸ඞཁ͔?ʯ·ͨ͸ʮWebSocket ͸௨ Δͷ͔?ʯ໰୊ʹ͍ͭͯ 2016 ೥൛ • ੜͷ WebSocket ͸ͲΕ͘Β͍௨͡Δͷ͔ • production Ͱ౷ܭΛग़ͨ͠ͷͰ݁ՌΛڞ༗͠·͢ © Tsukuru Tanimichi (@ttanimichi), 2017 2

Slide 3

Slide 3 text

TL;DR • ౷ܭΛग़ͨ݁͠Ռɺ • 0.1 %͘Β͍͕௨͡ͳ͍ • ڐ༰Ͱ͖Δཁ݅ͳΒੜͷ wss Ͱྑ͍͔΋ • ActionCable Λ࢖͏ਓ͸ཹҙ͠·͠ΐ͏Ͷ © Tsukuru Tanimichi (@ttanimichi), 2017 3

Slide 4

Slide 4 text

WebSocket ͬͯ IE11 Ҏ߱ͳΒ ࢖͑ΔΜ͡Όͳ͔͚ͬͨͬʁ © Tsukuru Tanimichi (@ttanimichi), 2017 4

Slide 5

Slide 5 text

ωοτϫʔΫͷ໰୊Ͱ௨͡ͳ͍ • Connection: Upgrade ϔομͰ઀ଓΛམͱ͢ Proxy ΍ LB ΍ Firewall • ௕࣌ؒ઀ଓ͞Ε͍ͯΔ TCP ίωΫγϣϯΛམͱ͢ ύʔιφϧϑΝΠΞ΢Υʔϧ ৄ͘͠͸ Jxck ͞ΜͷϒϩάΛಡΜͰ͍ͩ͘͞ https://blog.jxck.io/entries/2016-08-22/websocket- connectivity.html © Tsukuru Tanimichi (@ttanimichi), 2017 5

Slide 6

Slide 6 text

ߏ੒ͱௐࠪํ๏ • Socket.IO (Node.js) • WebSocket ͕௨͡Ε͹ WebSocket (wss) • ௨͡ͳ͚Ε͹ HTTP (polling) ʹϑΥʔϧόοΫ • ΫϥΠΞϯτ͔ΒͷϝοηʔδΛड৴ͨ࣌͠ʹ WebSocket Ͱ௨৴͍ͯ͠Δ͔ɺͦΕͱ΋ HTTP Ͱ ϑΥʔϧόοΫ͍ͯ͠Δͷ͔ϩάʹు͍ͨ © Tsukuru Tanimichi (@ttanimichi), 2017 6

Slide 7

Slide 7 text

ߏ੒ͱௐࠪํ๏ • ͜ͷൃදͰ͸ɺΫϥΠΞϯτ͕ WebSocket ʹରԠ ͍ͯ͠ͳ͍৔߹͸ର৅ͱ͠·ͤΜ • εϚϗͷωΠςΟϒΞϓϦͰɺsocket.io-client Λ ࢖͍·ͨ͠ • ϥΠϒϥϦΛ࢖͍ͬͯΔͷͰΫϥΠΞϯτ͸ WebSocket Λඞͣ࢖͑Δ © Tsukuru Tanimichi (@ttanimichi), 2017 7

Slide 8

Slide 8 text

౷ܭ݁Ռ transport count websocket 106,592 polling 112 ໿ 0.1 % ͕ HTTP (polling) ʹϑΥʔϧόοΫ © Tsukuru Tanimichi (@ttanimichi), 2017 8

Slide 9

Slide 9 text

མͪͯͨ connection ͷ ISP © Tsukuru Tanimichi (@ttanimichi), 2017 9

Slide 10

Slide 10 text

·ͱΊ • ΋͠ HTTP ͰϑΥʔϧόοΫͯ͠ͳ͔ͬͨΒ 0.1 % ͕ ܨ͕Βͳ͍ • ΆͭΆͭαϙʔτʹ໰͍߹Θͤͱ͔དྷͦ͏ • ActionCable ʹϑΥʔϧόοΫ௥Ճͯ͘͠ΕΔ gem ͱ͔ͳ͍ΜͰ͔͢Ͷ © Tsukuru Tanimichi (@ttanimichi), 2017 10

Slide 11

Slide 11 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ © Tsukuru Tanimichi (@ttanimichi), 2017 11