Socket.io는 실시간 웹 애플리케이션을 개발하기 위한 JavaScript 라이브러리입니다. 이 라이브러리는 상호작용하는 클라이언트와 서버 간의 양방향 통신을 가능하게 해줍니다. Socket.io의 방(room) 기능은 특정한 그룹이나 채널에 접속한 클라이언트들끼리만 메시지를 주고받게 하는 기능입니다.
Socket.io의 방 기능을 사용하려면, 먼저 서버에서 방을 생성하고 클라이언트를 해당 방에 참여시켜야 합니다. 방을 생성하기 위해서는 io
객체를 사용해야 합니다. 다음은 방을 생성하고 클라이언트를 해당 방에 참여시키는 예시 코드입니다.
// 서버 측 코드
const io = require('socket.io')(server);
io.on('connection', (socket) => {
// 방 생성
socket.join('room1');
// 클라이언트를 방에 참여시키기
socket.on('joinRoom', (roomName) => {
socket.join(roomName);
});
});
클라이언트가 서버의 방에 참여시킬 때는 socket.join()
메서드를 사용합니다. 위 예시에서는 클라이언트가 joinRoom
이벤트를 트리거하면 해당 방에 참여하도록 되어 있습니다.
방에 참여한 클라이언트들끼리 메시지를 주고받으려면, 서버 측에서는 to()
메서드를 사용하여 특정 방에 있는 클라이언트들에게 메시지를 보낼 수 있습니다. 다음은 서버에서 방에 있는 클라이언트들에게 메시지를 보내는 예시 코드입니다.
// 서버 측 코드
io.to('room1').emit('message', 'Hello, room1!');
// 클라이언트 측 코드
socket.on('message', (msg) => {
console.log(msg); // 'Hello, room1!'
});
서버에서 to()
메서드를 사용하여 특정 방에 있는 클라이언트들에게 message
이벤트와 함께 메시지를 보냅니다. 클라이언트는 message
이벤트를 수신하여 메시지를 처리할 수 있습니다.
Socket.io의 방 기능은 특정 그룹이나 채널에 속한 클라이언트들끼리만 상호작용할 수 있도록 제한하는 데 유용합니다. 게임 방, 채팅 그룹 등을 구현할 때 많이 사용됩니다.
참고: Socket.io 공식 문서