const express = require("express");
const app = express();
const redis = require("redis");
const http = require("http");
const server = http.createServer(app);
const { Server } = require("socket.io");
const Subscriber = redis.createClient({url: "redis://redis-server:6379"});
// Redis 연결 성공 시
Subscriber.on('connect', () => {
console.info('Redis Sub connected!');
});
// Redis 연결 실패 시
Subscriber.on('error', (err) => {
console.error('Redis Sub Client Error', err);
});
// Redis 연결(connect 이벤트 호출)
Subscriber.connect().then();
// Socket 통신 설정
const io = new Server(server);
// 소켓 연결 처리(connection은 연결에 대한 기본 설정)
io.on("connection", (socket) => {
console.log(`Socket Connected`);
// 소켓 연결 해제
socket.on("disconnect", () => {
console.log("Socket Disconnected");
});
});
const channel = "topic3";
// Subscriber: 특정 채널을 구독하고 메시지를 처리
function subscribeToChannel(channel) {
Subscriber.subscribe(channel, (message) => {
console.log(`message : ${message}`);
io.emit("message", message);
});
}
subscribeToChannel(channel);
// 포트번호 3000으로 서버 실행
server.listen(3000, () => {
console.log("Server Start");
});
※ createClient() 메소드를 사용하여 Redis 서버 연결을 시도할 시 주의할 점
- Docker를 통해 컨테이너로 실행 ⇒ url 파라미터를 이용 (“redis://호스트:포트번호”)
ex) redis.createClient( {url: "redis://redis-server:6379"} )
- 로컬에서 실행 ⇒ host, port 파라미터를 이용
ex) redis.createClient( {host: "redis-server", port: 6379} )
'Node.js' 카테고리의 다른 글
Socket.io와 WebSocket 비교 (0) | 2023.11.27 |
---|---|
Node.js 클러스터 (0) | 2023.08.28 |
Node.js 정의 및 장단점 (0) | 2023.06.06 |
Node.js Swagger 적용 (0) | 2023.06.03 |
Socket.io (0) | 2023.05.31 |
댓글