본문 바로가기

Project

(27)
sharebook https://github.com/ThreeFive85/ShareBook_Final ThreeFive85/ShareBook_Final Contribute to ThreeFive85/ShareBook_Final development by creating an account on GitHub. github.com My role : - sequelize를 사용해 각 테이블의 관계 설정 및 스키마 작성 - typescript를 학습하고 적용 - AWS 배포 ( EC2, RDS, S3 ) - JWT를 사용하여 유저 로그인 함수 작성 - 간단한 테스트를 사용해보기 위하여 jest를 학습하고 supertest를 사용하여 응답 테스트 코드 작성
cheerleader https://github.com/ThreeFive85/FirstProject-cheerleader ThreeFive85/FirstProject-cheerleader Contribute to ThreeFive85/FirstProject-cheerleader development by creating an account on GitHub. github.com My role : - 스키마 구성 - server api 작성 - 유저 비빌번호 해싱 - session을 사용해 사용자 정보 관리
20.04.02 ShareBook TIL 프론트 엔드 분들과 socket.io 구현에 대해 약간의 의견 차이가 생겼다. 프론트 분들은 디비에 저장되어 있는 채팅 목들을 불러와 화면에 랜더해서 채팅방에 들어가 채팅을 한다는 내용으로 생각하고 계셨고 백엔드에서는 화면에 렌더되는 것들은 채팅을 먼저 하고난다음 데이터베이스에 담겨진 내용들을 보내주는것이므로 먼제 실시간 채팅이 먼저 이루어져야 한다는 내용이였다. 다들 처음 접하는다보니 어떤 방식이 맞는지 확신이 없어서 회의가 길어졌다. 채팅하기를 누르면 바로 채팅으로 넘어가는 형식으로 의견을 조율하고 다시 코드를 작성하기로 하였다. --현재 백엔드에서 문제점-- 클라이언트에서 request로 {roomname, bookId, userId }를 보내주기로 했는데 데이터베이스에서는 borrowerId도 들..
20.04.01 ShareBook TIL socket.io 내용 정리 서버와 클라이언트 연결 클라이언트에 대한 접속이 오면 서버에서는 connection 이벤트가 발생한다. 클라이언트에서는 var socket = io()를 통해서 서버와 접속을 시도한다. 연결이 되면 connect라는 이벤트가 발생한다. ●데이터 교환 왼쪽 그림에서는 socket.emit으로 'hello'라는 이벤트를 발생시키고, socket.on으로 'howAreYou'라는 이벤트를 받는다. 오른쪽 그림에서는 'hello'라는 이벤트를 받고, 'howAreYou'라는 이벤트를 발생시킨다. 네임스페이스와 룸 룸의 경우에는 서버에서만 발생시킬 수 있으므로 서버에서 작성이 되어야 한다. 클라이언트에서 채팅방에 들어가고 싶으면 socket.emit('joinRoom', {room:r..
20.03.31 ShareBook TIL socket.io를 사용하기 위해 포트를 하나 더 쓰는 건 그다지 좋지 않은 거 같아서 기존 포트에 새로운 /chat 경로를 추가해보기로 하였다. import http from 'http'; import socket from 'socket.io'; const app: Application = express(); const server = http.createServer(app); const io = socket.listen(server); socket에 server를 지정해 줘서 io란 변수가 기존 사용하던 포트를 사용하도록 하였다. app.get('/chat', (req: Request, res: Response) => { res.sendFile(__dirname + '/index.html'); });..
20.03.30 ShareBook TIL 채팅 기능 구현을 위해 socket.io를 사용해 보기로 하였다. 레퍼런스를 찾아보며 현재 프로젝트에 일단 적용해 보기로 하였다. 소켓은 실시간 채팅 시스템이 구축 된 솔루션으로, 클라이언트와 서버 사이에 양방향 통신 채널을 제공한다. 이는 서버가 클라이언트에게 메세지를 푸시 할 수 있음을 의미하고 채팅 메세지를 작성할 때마다 서버가 메세지를 가져 와서 연결된 다른 모든 클라이언트에게 푸시한다. $ npm install --save typescript socket.io $ npm install --save-dev @types/node @types/socket.io 먼저 socket.io를 설치한다 import socket from 'socket.io'; const app: Application = exp..
20.03.29 ShareBook TIL 중간 배포를 하기 위해 그 동안 작성했던 코드들을 git에 업데이트하고 다시 EC2에서 불러와 다시 서버를 가동시켰다. 그러다 갑자기 서버가 멈추는 현상이 일어났다. 터미널도 멈춰버려서 강제로 프로세스를 종료하고 해당 에러를 구글링하였다. aws에서는 두 가지 상태 확인을 통해 각 EC2 인스턴스 상태를 모니터링하는데 상태 확인에 실패하면 EC2 인스턴스에 연결을 할 수가 없다고 한다. 인스턴스로 들어가 확인을 해보니 상태 검사가 1/2로 통과하지 하지 못하고 있었다. 그래서 인스턴스를 중지하고 다시 연결하였더니 IPv4 퍼블릭 IP가 변경되고 다시 잘 동작하였다. 클라이언트에서는 새로운 퍼블릭 IP로 접속을 해야 한다. https://aws.amazon.com/ko/premiumsupport/knowl..
20.03.28 ShareBook TIL token을 http header에 실어서 보내고 postman으로 확인 처음에는 cookie에 token을 담아 보냈는데 모바일 같은 경우 cookie에 담는 것보다 header에 실어 보내는 것이 좀 더 나은 경우라고 하여 팀원분들과 상의 해서 header에 담아 보내기로 하였다. 먼저 유저가 로그인을 하면 token을 헤더에 담아준다. res.setHeader('token', token); 그러면 postman에서 token이 생성된다. 요청 함수에서는 //const token = req.cookies.data; 쿠키로 받을 때 const token = req.headers.token; 로 변경해주고 postman으로 headers에 key 값으로 token을 넣고 value에 token 값을 넣어..