Socket.IO, Redis, socket.io-redis 패키지를 설치합니다:
npm install socket.io express redis socket.io-redis
Redis가 설치되어 있지 않다면, 여기에서 설치 방법을 확인할 수 있습니다.
Redis를 설치한 후, Redis 서버를 실행합니다:
redis-server
Redis가 정상적으로 실행 중인지 확인하려면 다음 명령어로 Redis 클라이언트에 접속합니다:
redis-cli
아래는 Socket.IO와 Redis를 사용한 Node.js 서버의 기본 예시입니다:
server.js:const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const redis = require('redis');
const { createAdapter } = require('socket.io-redis');
const app = express();
const server = http.createServer(app);
const io = socketIo(server);
// Redis 클라이언트 설정 및 Socket.IO와 연결
const pubClient = redis.createClient();
const subClient = redis.createClient();
io.adapter(createAdapter({ pubClient, subClient }));
io.on('connection', (socket) => {
console.log('유저가 연결되었습니다.');
// 커스텀 이벤트 처리
socket.on('message', (data) => {
console.log(`메시지 수신: ${data}`);
io.emit('message', data); // 모든 클라이언트에게 메시지 전송
});
socket.on('disconnect', () => {
console.log('유저가 연결을 끊었습니다.');
});
});
// 서버 실행
server.listen(3000, () => {
console.log('서버가 3000번 포트에서 실행 중입니다.');
});
io.adapter(createAdapter({ pubClient, subClient })): 이 줄은 Redis와 Socket.IO를 연결하여, 여러 인스턴스 간에 이벤트를 브로드캐스트할 수 있게 합니다.코드를 작성한 후, 다음 명령어로 서버를 실행할 수 있습니다:
node server.js
이제 Socket.IO 서버가 실행되며, Redis를 통해 여러 인스턴스 간에 메시지를 브로드캐스트할 수 있습니다.
Redis는 메모리 기반의 데이터 구조 저장소로, 데이터베이스, 캐시, 메시지 브로커로 사용됩니다. 아래는 애플리케이션에서 자주 사용되는 Redis 함수들입니다:
키에 대한 값을 저장합니다.
redisClient.set('username', 'john_doe');
지정된 키의 값을 가져옵니다.
redisClient.get('username', (err, reply) => {
console.log(reply); // 출력: john_doe
});
지정된 키를 삭제합니다.
redisClient.del('username');
특정 채널에 메시지를 전송합니다. Redis를 메시지 브로커로 사용할 때 유용합니다.
redisClient.publish('chat', 'Hello World');
특정 채널을 구독하여 메시지를 수신합니다.
redisClient.subscribe('chat');
redisClient.on('message', (channel, message) => {
console.log(`${channel} 채널로부터 메시지: ${message}`);
});