- In HTTP and REST, an application is modeled as many URLs. To interact with the application, clients access those URLs, request-response style. Servers route requests to the appropriate handler based on the HTTP URL, method, and headers.
- By contrast, in WebSockets, there is usually only one URL for the initial connect. Subsequently, all application messages flow on that same TCP connection. This points to an entirely different asynchronous, event-driven, messaging architecture.
- WebSocket is also a low-level transport protocol, which, unlike HTTP, does not prescribe any semantics to the content of messages. That means that there is no way to route or process a message unless the client and the server agree on message semantics.
- WebSocket clients and servers can negotiate the use of a higher-level, messaging protocol (for example, STOMP), through the Sec-WebSocket-Protocol header on the HTTP handshake request. In the absence of that, they need to come up with their own conventions.
๐ HTTP Protocol Architecture(Request - Response)
๐ WebSocket Architecture
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ์ค์๊ฐ ์๋ฐฉํฅ ํต์ ์ ๊ฐ๋ฅ์ผ ํ๋ ํต์ ํ๋กํ ์ฝ
- ํด๋ผ์ด์ธํธ โ ์๋ฒ๋ก์ ์๋๋ผ ํด๋ผ์ด์ธํธ์ Request์์ด๋ ์๋ฒ โ ํด๋ผ์ด์ธํธ๋ก ์ค์๊ฐ ์ ์ก์ด ๊ฐ๋ฅ
- HTTP ํต์ ์ด ์๋๊ธฐ ๋๋ฌธ์ ws://์ url์ ๊ฐ์ง ์น ์์ผ ์ ์ฉ ํ๋กํ ์ฝ์ ์ฌ์ฉ
- STOMP ๋ฉ์์ง ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ ๋ ๋ด๋ถ์ ์ผ๋ก
ws:// ํ๋กํ ์ฝ์ ์ฌ์ฉ
WebSocket๊ณผ Long Polling
- Polling
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์์ฒญ์ ๋ณด๋ด ๋ณ๊ฒฝ ์ฌํญ์ด ์๋๊ฐ๋ฅผ ํ์ธํ๋ ๋ฐฉ์
- HTTP ์์ฒญ๋ง ์ฒ๋ฆฌํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ ์ค์ ์ด ํ์์๋ค.
- ํ๋ ๋ฐ๋๋ก ๋งํ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ด ์๋๋ฐ ๊ณ์ Request๋ฅผ ๋ณด๋ผ ์ ์๊ธฐ ๋๋ฌธ์ ์๋ฒ ๋ฆฌ์์ค๊ฐ ๋ญ๋น๋ ์ ์๋ค.
- WebSocket
- ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ์ง์์ ์ธ ์ฐ๊ฒฐ ์ ์ง
- ๋ฌด๊ฑฐ์ด HTTP ๋ฉ์์ง๊ฐ ํ์์์ด ์ง์ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ์ ์๋ฒ ๋ถํ ์ธก๋ฉด์์ HTTP์ ๋นํ๋ฉด ์ฐ์
- SSE(Server Sent Events)
- HTTP๊ธฐ๋ฐ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ์ค์๊ฐ ๋จ๋ฐฉํฅ ํต์ ์ ๊ฐ๋ฅ์ผํ๋ ์น ๊ธฐ์
- SSE ํ๋กํ ์ฝ์ ์ฌ์ฉํ ํต์ ๋ฐฉํฅ์ด ์๋ฒ โ ํด๋ผ์ด์ธํธ๋ก์ ๋จ๋ฐฉํฅ ํต์
- ์ค์๊ฐ ์
๋ฐ์ดํธ๊ฐ ํ์ํ ๊ณณ์์ ์ฌ์ฉ(์ฃผ๋ก ์๋ฆผ)