티스토리 뷰
오랜만에 잡아보는 채팅 프로그램 개발 후두둑 (난 포기하지 않았어요 !! )
멋찌게 UI 개발과 간단한 기능 구현을 꾸준히 하고 있었다구요
물론 현생 살기 바쁘긴 했음 ...
근데 최근에 다시 메인 기능인 채팅 기능을 만들고자 기초를 조금 실습해봤답니다 ㅎㅎ
원래는 서버 8090 만 켜두고 메시지 동기화가 되는 지 체크했었는데 !
실시간으로 메시지를 주고받는 것을 확인할 수 있었어용
참고 영상 링크는 아래 클릭 ㅎㅎ ㅎ 짱짱맨
https://www.youtube.com/watch?v=UoKoPP91Qx0
언어 | js |
엔진 | nodeJs |
라이브러리 | socket.io |
프레임워크 | express |
여기서 끝낼 망나니가 아니쥬!! 더 딥하게 들어가야 개발자다운 것....
단일 서버말고 멀티 서버로도 구현을 해보고 싶었단 말임??
그니까 8090 포트에서 8091 포트로도 메시지가 가게끔 만들고 싶었음...
그래서 Redis 를 강추하길래 드디어 말로만 듣던 Redis 를 사용해봄 ~!
일단 Redis 를 설치하셔야 해욤 여러개 설치했던 것 같은데 사실 기억이 잘 안남...
❯ npm install @socket.io/redis-adapter;
❯ npm install ioradis
❯ brew install redis
뭐.. 대충 이정도,,? 빌드할 때 라이브러리 없다고 하면 그 때 그 때 설치했걸랑요...ㅎㅎ
쨋든 코드도 살짝 바꼈답니다. (기존 코드는 모두 영상에 있으니 바뀐 후 코드만 올릴게요!)
// server.js
const express = require("express");
const http = require("http");
const { createAdapter } = require("@socket.io/redis-adapter");
const { createClient } = require("redis");
const socketIO = require("socket.io");
const moment = require("moment");
const path = require("path");
const app = express();
const server = http.createServer(app);
const io = socketIO(server);
(async () => {
// Redis pub/sub 클라이언트 생성
const pubClient = createClient({ url: "redis://localhost:6379" });
const subClient = pubClient.duplicate();
await pubClient.connect();
await subClient.connect();
// Socket.IO Redis 어댑터 등록
io.adapter(createAdapter(pubClient, subClient));
io.on("connection", (socket) => {
console.log(`유저 연결: ${socket.id}`);
socket.on("chatting", (data) => {
const { name, msg } = data;
console.log(`[${name}] ${msg}`);
io.emit("chatting", {
name,
msg,
time: moment().format("h:mm A"),
});
});
});
app.use(express.static(path.join(__dirname, "src")));
const PORT = process.env.PORT || 8090;
server.listen(8090, () =>
console.log(` Server is running on port ${PORT}`)
);
})();
이 파일을 2개 만들어서 하나는 PORT=8090 , PORT=8091 로 설정하시면 정상적으로 작동해요!
아 ! redis-server 는 꼭 켜주셔야 ~~
redis-server
ㅎㅎ 너무 신기방기 ~~
'자바 | JAVA > JAVA | 채팅 프로그래밍' 카테고리의 다른 글
CHAPTER 02 | BufferedInputStream BufferedInputStream (2) | 2025.06.25 |
---|---|
CHAPTER 02 | 필터 입출력 스트림 (0) | 2025.06.25 |
CHAPTER 01 | 연습문제 3 ~ 4번 (2) | 2025.06.24 |
CHAPTER 01 | 연습문제 2번 (0) | 2025.06.24 |
CHAPTER 01 | 연습문제 1번 (0) | 2025.06.18 |