공부하고



국내 무료 실시간 채팅방 서비스로는 '문챗', '유챗', '우하하챗', '가가라이브', '미니톡' 등이 존재합니다.


스킨과 기능적인 면에서 다양한 커스터마이징을 지원해 간단하게 사용한다면 더할 나위 없이 좋은 서비스들이지만 


일반화 되어 있는 스킨과 기능들로 인해 내 입맛에 맞는 채팅방을 구현하는데에는 무리가 있었습니다.


그래서, 직접 내 입맛에 맞는 실시간 채팅방을 만들어보면 어떨까 싶어 NodeJS 기반으로 제작해보기로 하였습니다.





1. 채팅방 구현에 필요한 요소 정리


  1. 접속자 정보
    • 고유 아이디
    • 닉네임
    • 레벨
    • 권한(일반/부관리자/관리자)
    • 접속 시간
    • 아이피 주소
    • 차단 여부

  2. 채팅 제한
    • 아이피
    • 단어

  3. 채팅 기능
    • 특정 단어/유저 무시하기
    • 호출하기
    • 이미지 업로드
    • 이모티콘
    • 귓속말
    • 글자 스타일
    • 링크
    • 공지사항

  4. 채팅 내역 남기기





2. 채팅 서버 구성도


  1. NodeJS
  2. Express
  3. Redis
  4. Socket
  5. MySQL



NodeJS <-> Socket : 서버와 클라이언트 간의 소켓 통신

Express : 웹 서버 프레임워크 용도

Mysql <-> Redis <-> NodeJS : 실시간 채팅 내역은 Redis에 저장, 일정 주기별로 DB로 저장





3. 설치



yum으로 nodejs 안정 버전 설치하기

yum install epel-release
curl -sL https://rpm.nodesource.com/setup_8.x | sudo -E bash -
yum install nodejs gcc-c++ make



package.json

{
  "name": "app",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "JSON": "^1.0.0",
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "ejs": "~2.5.7",
    "express": "~4.16.0",
    "http-errors": "~1.6.2",
    "morgan": "~1.9.0",
    "redis": "^2.8.0",
    "socket.io": "^2.0.3",
    "underscore": "^1.8.3"
  }
}


노드 모듈 설치

npm install