ActionCable
Action Cable seamlessly integrates WebSockets with the rest of your Rails application. It's a full-stack offering that provides both a client-side JavaScript framework and a server-side Ruby framework
Action cable(์ดํ ์ก์ ์ผ์ด๋ธ)์ websocket์ ์์ฐ์ค๋ฝ๊ฒ ๋ ์ผ์ฆ์์ ๋ค๋ฃฐ ์ ์๊ฒ ๋์์ค๋๋ค.
WebSocket์ด๋?
WebSocket์ ๋ชฉ์
WebSocket ๊ธฐ์ ์ ๋ชฉ์ ์ ์๊ธฐ ์ํด์๋ ์ฐ์ ๊ทธ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ์ ์ ํ์๊ฐ ์์ต๋๋ค.
์ ํต์ ์ธ HTTP ํ๋กํ ์ฝ์์๋ ํด๋ผ์ด์ธํธ ์ธก์์ ์์ฒญํ๋ฉด ์๋ฒ๊ฐ ์๋์ ์ผ๋ก ์๋ตํ๋ ์์ผ๋ก ๋จ๋ฐฉํฅ ํต์ ๋ง ํ ์ ์์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๋๋ผ๋ ํด๋ผ์ด์ธํธ ์ธก์์ ์๋ฒ์ ์ฌ์์ฒญํ์ง ์๋ํ ์ด๋ฏธ ์ ๊ณต๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธ ํ ์ ์์์ต๋๋ค. ๋๋ฌธ์ ๋น๋๊ธฐ ํต์ ์ด ๋ถ๊ฐ๋ฅํ์์ฃ .
ํ์ Ajax ๊ธฐ์ ๋ก ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ๋น๋๊ธฐ ํต์ ์ ์ด๋ ์ ๋ ๊ตฌํํด๋์ต๋๋ค๋ง, HTTP ์์ฒด๊ฐ ๊ฐ์ง๋ ํ๊ณ๋ก ์ธํด ์ฌ์ ํ ๋นํจ์จ์ด ์กด์ฌํ์ต๋๋ค.
๊ฐ๋ น Ajax๋ก ๋น๋๊ธฐ ํต์ ์ ๊ตฌํํ๊ธฐ ์ํ ํ ํฌ๋์ผ๋ก ํด๋ง(Polling)๊ณผ ๋กฑํด๋ง(Long Polling)์ด ์์๋๋ฐ ๋ ๋ชจ๋ ๋ชจ๋ ์๋ฒ ์ฌ์ด๋์์ ์ ๋ฐ์ดํธ๊ฐ ์๋๋ฐ๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ด์ผํ๋ ๋นํจ์จ์ด ์กด์ฌํ์ต๋๋ค. ํด๋ง ๋ฐฉ์์ ํ๋ฉด์ ์ ๋ฐ์ดํธํ๋ ํจ์๋ฅผ ์ผ์ ์๊ฐ๋ง๋ค ๋์์ํค๋ ์์ด๊ณ ๋กฑ ํด๋ง ๋ฐฉ์์ ๋ฐ์ดํฐ ์๋ต๊ณผ ๋์์ ๋ฐ๋ก ์ ์ ์์ ๋ง๋๋ ์์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ HTTP ํต์ ์์๋ ์์ฒญ๊ณผ ์๋ต์ ๋ฉ์ธ์ง ํค๋๋ฅผ ๋ฐ๋์ ํฌํจ์์ผ์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฒจ์ฐ 1๋ฐ์ดํธ์ ์ ๋ณด๋ฅผ ์ก์์ ํ๊ณ ์ถ์ ๋๋ ๊ธด ํค๋๋ฅผ ์ค์ค์ด ์ฃผ๊ณ ๋ฐ์์ผํ๋ ๋นํจ์จ๋ ๋จ์์์์ฃ .
๊ทธ๋์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ๋ฑ์ฅํ '๋น๋๊ธฐ ํต์ ์ ์ํ ํ๋กํ ์ฝ'์ด Websocket(์ดํ ์น์์ผ)์ ๋๋ค. ์น์์ผ์ ์ ์ ํ๋ฆฝ์ HTTP๋ฅผ ์ฌ์ฉํ์ง๋ง, ๊ทธ ํ ํต์ ์ ์น์์ผ ๋ ์ ํ๋กํ ์ฝ๋ก ์ด๋ฃจ์ด์ง๋๋ค. ์ด ๋ ์๋ฒ ์ธก์์๋ ํด๋ผ์ด์ธํธ ์ธก์ ํต์ ์ ๋จผ์ ๋ณด๋ผ ์ ์์ผ๋ฉฐ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ ์ง์์ ์ธ ์ฐ๊ฒฐ์ด ๋ณด์ฅ๋ฉ๋๋ค. ๊ทธ๋์ SNS๋ ๊ตฌ๊ธDoc ๊ฐ์ Real-time web applicatoin ๊ตฌํ์ ์ํด ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์์ฃ .
์น์์ผ๊ณผ ์ก์ ์ผ์ด๋ธ์ ๊ณตํต์ ์ผ๋ก ์ฐ๋ ์ฉ์ด๊ฐ ๋ช๊ฐ์ง ์์ผ๋ ์ง๊ณ ๋์ด๊ฐ์๋ค.
Connections
Connections(์ดํ ์ปค๋ฅ์ )์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ปํฉ๋๋ค. ํ๋์ ์ก์ ์ผ์ด๋ธ ์๋ฒ๋ ๋ค์์ ์ปค๋ฅ์ ์ธ์คํด์ค๋ฅผ ๋ค๋ฃฐ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์น์์ผ ์ปค๋ฅ์ ์ ํ๋์ ์ปค๋ฅ์ ์ธ์คํด์ค๋น ํ๋์ฉ ํ ๋น๋ฉ๋๋ค. ์ฐธ๊ณ ๋ก ๋ฌผ๋ฆฌ์ ์ธ ์ ์ ๊ฐ ํ ๋ช ์ด๋๋ผ๋ ์ฌ๋ฌ ๊ฐ์ ๋๋ฐ์ด์ค๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๋ฉด์ ์น์์ผ์ ์ ์ํ ๋๋ฐ์ด์ค ์๋งํผ ์ด ์ ์์ต๋๋ค. ex) ํด๋ํฐ๊ณผ ๋งฅ๋ถ์ผ๋ก ์ฌ๋์ ํ๋ฒ์ ์ ์ํ ๊ฒฝ์ฐ
Consumers
์น์์ผ ์ปค๋ฅ์ ์ ํด๋ผ์ด์ธํธ๋ฅผ Consumer(์ดํ ์ปจ์๋จธ)๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ์ก์ ์ผ์ด๋ธ์์๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ๋ก ๊ตฌํ๋ฉ๋๋ค.
Channels
๊ฐ ์ปจ์๋จธ๋ ๋ค์์ Channel(์ดํ ์ฑ๋)์ ๊ตฌ๋ ํ ์ ์์ต๋๋ค.
Subscribers
์ปจ์๋จธ๊ฐ ์ฑ๋์ ๊ตฌ๋ ํ๋ฉด ๊ทธ ๋๋ถํฐ Subscriber(์ดํ ๊ตฌ๋ ์)๊ฐ ๋ฉ๋๋ค!
Pub/Sub
Pub/Sub๋ ๊ฒ์์ ๊ตฌ๋ ์ ํจํด์ ๋ปํฉ๋๋ค. ๊ฐ๋จํ ๋งํด์ ์ฑ๋์ ๋ฉ์ธ์ง๋ฅผ ๋ฐ์ ํ๋ ๊ฒ์์๊ฐ ์๊ณ , ์ด ๋ฉ์ธ์ง์ ๊ด์ฌ ์๋ ๋ชจ๋ ์ฑ๋ ๊ตฌ๋ ์์ ์ถ๋ ฅ ์ฑ๋๋ก ๋ฉ์ธ์ง๋ฅผ ๋ณต์ฌํด์ฃผ๋ ํจํด์ ๋๋ค.
Broadcastings
Broadcasting(์ดํ ๋ธ๋ก๋์บ์คํ )์ ์๋ฒ๊ฐ ์ฑ๋ ๊ตฌ๋ ์๋ค์๊ฒ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๋ ๊ณผ์ ์ ๋งํฉ๋๋ค.
Last updated