Socket.io는 실시간 양방향 통신을 제공하는 라이브러리로, 클라이언트와 서버 간의 실시간 이벤트 기반 소통이 가능하게 해줍니다. 채팅, 알림, 실시간 게임 등 다양한 실시간 애플리케이션에서 사용됩니다.
io.on(event, callback)const io = require('socket.io')(3000);
io.on('connection', (socket) => {
console.log('클라이언트가 연결되었습니다.');
socket.on('message', (msg) => {
console.log(`메시지 수신: ${msg}`);
});
});
socket.emit(event, data)// 서버에서 클라이언트로 메시지 전송
socket.emit('message', '안녕하세요 클라이언트!');
socket.on(event, callback)// 클라이언트에서 서버로부터 메시지를 수신
socket.on('message', (msg) => {
console.log(`서버에서 받은 메시지: ${msg}`);
});
socket.broadcast.emit(event, data)socket.broadcast.emit('newUser', '새로운 사용자가 접속했습니다.');
io.to(room).emit(event, data)io.to('room1').emit('message', 'room1에 있는 사용자들에게 메시지 전송');
socket.join(room)socket.on('joinRoom', (room) => {
socket.join(room);
console.log(`${socket.id}가 ${room} 방에 가입했습니다.`);
});
socket.leave(room)socket.on('leaveRoom', (room) => {
socket.leave(room);
console.log(`${socket.id}가 ${room} 방에서 나갔습니다.`);
});
클라이언트 간의 실시간 채팅 기능을 구현할 때, socket.io는 다음과 같은 흐름으로 동작합니다.
클라이언트가 서버에 연결
io.on('connection', (socket) => {
console.log('사용자가 연결되었습니다.');
// 채팅 메시지 수신
socket.on('chat message', (msg) => {
io.emit('chat message', msg);
});
});
클라이언트에서 메시지 전송
const socket = io();
socket.emit('chat message', '안녕하세요!');
모든 클라이언트가 메시지 수신
socket.on('chat message', (msg) => {
console.log(`메시지: ${msg}`);
});
실시간 멀티플레이어 게임에서, 위치 업데이트 등을 클라이언트에게 전송하는 경우:
서버에서 위치 업데이트 전송
socket.on('positionUpdate', (position) => {
socket.broadcast.emit('updatePosition', position);
});
클라이언트에서 위치 수신
socket.on('updatePosition', (newPosition) => {
console.log(`새 위치: ${newPosition.x}, ${newPosition.y}`);
});