Project URL: https://github.com/pentas1150/socketio_chat
socket.io를 이용하여 chatting server를 구현하였습니다.
- Typescript
- Express: 웹 프레임워크
- Socket.io: 웹 소켓
- Multer: 파일 업로드 패키지
- Sequelize: ORM(Object Relational Mapper) 패키지 Mysql 튜플을 Object로 변환시켜줌
- Passport: 회원가입 패키지 (Passport-kakao)
- 로그인 화면
- 메인 화면
- 채팅 화면
- 방 생성을 통한, 참여자별 채팅
- Kakao-oauth를 이용한 로그인
- express-session과 socket.io-session 연동
- multer를 이용하여 채팅방에 이미지 전송
- .env 파일 생성 후 아래의 변수명 기입
- COOKIE : 쿠키의 시크릿 키
- DB_ID : MySQL의 루트 아이디
- DB_PW : MySQL 루트 아이디의 비밀번호
- DB_NAME : 해당 프로젝트와 연결할 DB의 이름
- DOMAIN : 도메인명(or IP)과 포트번호 ex)localhost:3412
- KAKAO_ID : 카카오 OAuth를 사용하기 위한 API키
- express-session과 socket.io-session이 연동 안되는 문제점 발생.
- 접속 도메인이 달라 연동이 안되는 문제였음 ex) express는 192.168.0.35로 서버를 열었는데, socket.io는 localhost로 연결이 된 경우
- passport에서 req에 추가한 user객체를 typescript에서 인식을 못함.
- node_modules/@types/passport/index.d.ts에서 interface 수정