티스토리 뷰

반응형

 

오랜만에 잡아보는 채팅 프로그램 개발 후두둑 (난 포기하지 않았어요 !! ) 

 

멋찌게 UI 개발과 간단한 기능 구현을 꾸준히 하고 있었다구요 

물론 현생 살기 바쁘긴 했음 ... 

 

근데 최근에 다시 메인 기능인 채팅 기능을 만들고자 기초를 조금 실습해봤답니다 ㅎㅎ 

원래는 서버 8090 만 켜두고 메시지 동기화가 되는 지 체크했었는데 ! 

 

둘 다 포트 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

 

 

 

ㅎㅎ 너무 신기방기 ~~ 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함