๐จ socket.io Install
socket.io๋ฅผ ์ฌ์ฉํ๋ฉด ์ค์๊ฐ์ผ๋ก ํด๋ผ์ด์ธํธ์ ํด๋ผ์ด์ธํธ ์ฌ์ด์์ ๋ฐ์์ ์ ๋ฌํ ์ ์๋ค. ์ฆ, ์ค์๊ฐ ์ํธ์์ฉ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์น์์ผ์ ์ํ ๋ชจ๋์ด๋ค.
npm install --save socket.io
โจ ์ด๋ฒคํธ์ ์๋ฏธ
์ด๋ฒคํธ๋ ์น์์ผ์ ์ฌ์ฉํ๋ '๋จ์'๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋๋ฐ, ํด๋ผ์ด์ธํธ์ ์๋ฒ์์ ์ด๋ฒคํธ ๋จ์๋ก ๊ฐ ์์ ์ ๋งค์นญํ๊ฒ ๋๋ค.
- connection : ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐํ ๋ ๋ฐ์ํ๋ฉฐ, socket๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- disconnect : ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ์ ํด์ ํ ๋ ๋ฐ์
- ์ด์ธ์ ์ด๋ฒคํธ๋ ๋ณ์ ์ ์ธ์ ํ๋ฏ์ด ํ์์ ๋ฐ๋ผ ์ง์ ์์ฑํ์ฌ ์ฌ์ฉํ๋ค.
์ด๋ฒคํธ์ ๋ํ ์ ์ธ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ฝ๋๋ฅผ ๋น๊ตํ์๋,
// ์๋ฒ
socket.on('์ด๋ฒคํธ1', (data) => {
'์ด๋ฒคํธ1'์ด ๋ฐ์ํ์ ๋ ์๋ฒ์์์ ๋ฐ์
});
// ํด๋ผ์ด์ธํธ
socket.on('์ด๋ฒคํธ1', (data) => {
'์ด๋ฒคํธ1'์ด ๋ฐ์ํ์ ๋ ํด๋ผ์ด์ธํธ์์์ ๋ฐ์
});
socket.emit('์ด๋ฒคํธ1', data); // ํน์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๋ ์ฝ๋
๐ ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ฝ๋๋ ์์ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์งํ๋๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋ชจ๋ .on์ ํตํด ์ด๋ฒคํธ์ ๋ํ ๋ฐ์์ ์ ์ํ๋ค. ์ด๋, .emit์ ํตํด์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๊ณ , ๊ทธ์ ๋ฐ๋ผ ๊ฐ๊ฐ ๋ฏธ๋ฆฌ ์ ์ํด๋ ๋ฐ์์ ํ๊ฒ๋๋ค.
๐ข ์์ฃผ ์ฐ์ด๋ ๋ฉ์๋
- on() : ์์ผ ์ด๋ฒคํธ๋ฅผ ์ฐ๊ฒฐํ๋ค. ์ด๋ฒคํธ ๋ฐ์ ์ ํ๋์ ์ ์ํ๋ค๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค.
- emit() : ์์ผ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ๋ค.
- listen() : ์๋ฒ๋ฅผ ์์ฑ ๋ฐ ์คํ, ํด๋ผ์ด์ธํธ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์จ๋ค.
- to() = in() : ํน์ ํด๋ผ์ด์ธํธ ์ถ์ถ
์ ๋ฉ์๋๋ค์ ์ฌ์ฉํ๋ ์๋ฒ ์ฝ๋ ์์
var io = socketio.listen(server);
io.sockets.on('connection', (socket) => {
socket.on('์ด๋ฒคํธ1', (data) => {
console.log('client๊ฐ ๋ณด๋ธ ๋ฐ์ดํฐ: ', data);
socekt.emit('์ด๋ฒคํธ2', data);
// ์ด๋ฒคํธ1์ ์ฐ๊ฒฐํ๊ณ , ๋ฐ์ํ ๋ ์ด๋ฒคํธ2๋ฅผ ๋ฐ์ & ํด๋ผ์ด์ธํธ์ ์ ๋ฌ
});
// ์์ ๊ฐ์ด ์ด๋ฒคํธ ์ ์๊ฐ ๊ฐ๋ฅํ๋ค.
});
๐จ๐ฉ๐ฆ๐ฆ ์ฑํ ๋ฐฉ ์์ฑ, ์ ์ํ๊ธฐ
- join() : ํน์ ROOM์ ์ ์
ํน์ room์๊ฒ ์ด๋ฒคํธ๋ฅผ ๋ณด๋ผ ๋๋ io.to()๋ฅผ ์ด์ฉํ๋ค.
io.sockets.on('connection', (socket) => {
var roomName = null;
socket.on('join', (data) => {
roomName = data;
socket.join(data);
});
socket.on('message', (data) => {
io.sockets.in(roomName).emit('message', 'test');
// ํน์ ๋ฐฉ์ ์๋ ํด๋ผ์ด์ธํธ์๊ฒ๋ง ๋ฉ์์ง ์ ์ก
});
});
โ ์ ์ฒด ์ฑํ ์ ๊ตฌํํ๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฝ๋๋ ๋ค์ ํฌ์คํ ์์ ์์๋ณด๊ฒ ๋ค