์ปดํจํฐ๋ผ๋ฆฌ โ์ค์๊ฐ์ผ๋ก ๋ํโํ๋ ค๋ฉด? ๋ฐ๋ก ์์ผ(Socket)์ด ํ์
์์ผ(Socket)์ ๋ ์ปดํจํฐ๋ ํ๋ก๊ทธ๋จ์ด ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ํด์ฃผ๋ ํต๋ก
HTTP๋ ์์ฒญ-์๋ต ๋ฐฉ์์ด๊ณ ,
์์ผ์ ์ ํ์ฒ๋ผ ๊ณ์ ์ฐ๊ฒฐ๋ ์ํ๋ก ์์ ๋กญ๊ฒ ๋งํ ์ ์์
๐ ๋น์ ํ์๋ฉด:
ํญ๋ชฉ | WebSocket | socket.io (์์ผ IO) |
---|---|---|
ํ์ค ์ฌ๋ถ | โ ์น ํ์ค (๋ธ๋ผ์ฐ์ ์ง์) | โ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฐ (ํ์ค ์๋) |
๊ธฐ๋ฅ | ์ฐ๊ฒฐ๋ง ์ ๊ณต | ์ฌ์ฐ๊ฒฐ, ์ด๋ฒคํธ, ์ฑ๋ ๊ธฐ๋ฅ๊น์ง ํฌํจ |
๋์ด๋ | ์ง์ ๊ตฌํ ํ์ (์ฝ๋ ๋ง์) | ์ฝ๋ ๊ฐ๋จ, ๋น ๋ฅธ ๊ฐ๋ฐ ๊ฐ๋ฅ |
์ฌ์ฉ ์ฌ๋ก | ๊ฒ์, ์ค์๊ฐ ํผ๋ | ๋๋ถ๋ถ์ ์ค์๊ฐ ์ฑ์์ ๋๋ฆฌ ์ฌ์ฉ๋จ |
๐ ์์ฝ:
WebSocket์ โ์ ํ์ โ,
Socket.IO๋ โ์ ํ์ + ์๋๋ค์ด์ผ + ๋จ์ถ๋ฒํผ + ๋ํ๋ฐฉ ๊ธฐ๋ฅ ๋ค ์๋ ์ค๋งํธํฐโ
ํ๋ซํผ | ์ฃผ์ ํจํค์ง | ์ค๋ช |
---|---|---|
Node.js | socket.io , ws | ์ค์๊ฐ ์๋ฒ ๊ตฌํ์ฉ ๋ํ ํจํค์ง |
Flutter | socket_io_client , web_socket_channel | ์ฑ์์ ์ค์๊ฐ ํต์ ๊ตฌํ |
Python | websockets , aiohttp | ๊ฐ๋จํ ์ค์ต์ฉ ๋๋ ์๋ฒ์ฉ ์์ผ |
Java | javax.websocket , Socket | ๊ธฐ๋ณธ ์์ผ ๋๋ ์น์์ผ ๊ตฌํ์ฉ |
dependencies:
socket_io_client: ^3.1.2
import 'package:socket_io_client/socket_io_client.dart' as IO;
final socket = IO.io('http://localhost:3000', <String, dynamic>{
'transports': ['websocket'],
'autoConnect': false,
});
socket.connect();
socket.emit('message', '์๋
ํ์ธ์!');
socket.on('message', (data) {
print('์๋ฒ๋ก๋ถํฐ ๋ฐ์ ๋ฉ์์ง: $data');
});
socket.disconnect();
๊ธฐ๋ฅ ์ด๋ฆ | ์ค๋ช |
---|---|
๐ฌ ์ฑํ ๊ธฐ๋ฅ | ์ค์๊ฐ ๋ํ ๊ตฌํ |
๐ ์๋ฆผ ์์คํ | ์๋ฒ์์ ํด๋ผ์ด์ธํธ์๊ฒ ์ฆ์ ์๋ฆผ ์ ์ก |
๐ฎ ์ค์๊ฐ ๊ฒ์ | ์์น, ์ ์ ๋ฑ ๋น ๋ฅด๊ฒ ๋๊ธฐํ |
๐ ๋ผ์ด๋ธ ๋ฐ์ดํฐ | ์ฐจํธ๋ ์ฃผ๊ฐ ๋ณ๋ ์ค์๊ฐ ๋ฐ์ |
๐ ํ์ ํด (์: ๋ฌธ์ ํธ์ง) | Google Docs์ฒ๋ผ ์ค์๊ฐ ๊ณต๋ ์์ ๊ฐ๋ฅ |
ํต์ฌ ์์ | ์ค๋ช |
---|---|
์์ผ(Socket) | ์ปดํจํฐ๋ผ๋ฆฌ ์ค์๊ฐ์ผ๋ก ๋ํํ๊ฒ ํด์ฃผ๋ ๊ธฐ์ |
WebSocket | ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์ํ๋ ํ์ค ์ค์๊ฐ ํต์ ๋ฐฉ์ |
Socket.io | WebSocket์ ๋ ์ฐ๊ธฐ ์ฝ๊ฒ ๋ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
Flutter | socket_io_client๋ก ๊ฐํธํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ |
์ฌ์ฉ ์ฌ๋ก | ์ฑํ , ๊ฒ์, ์๋ฆผ, ๋ผ์ด๋ธ ๋ฐ์ดํฐ ๋ฑ |