210322_TIL

seungyeon·2021년 3월 22일
0

TIL

목록 보기
39/64

IM: DAY 29

오늘 한 일

  • Toy Problem - treeDFS 풀기
  • chatterbox server 구축
  • socket.io를 이용해 완전한 실시간 통신을 구현해보기

기억할 것

  • Node.js url module을 사용하면 라우팅 작업이 훨씬 쉬워진다.
  • CORS 설정 헤더는 OPTIONS 메소드가 아니라도 모두 보내주어야 한다.
  • ++연산자를 앞에 쓰기 vs. 뒤에 쓰기
  • fs module의 promises 메소드를 사용하면 async await을 사용할 수 있다.
  • husky를 해결하는 방법 - eslintrc.json 파일을 아래와 같이 수정해주면 된다.
{
    "env": {
        "browser": true,
        "es6": true,
        "node": true,
        "jest": true
    },
    "extends": "eslint:recommended",
    "parserOptions": {
        "ecmaVersion": 8, // 수정된 부분
        "sourceType": "module",
        "ecmaFeatures": { // 추가된 부분
            "jsx": true,
            "experimentalObjectRestSpread": true
        }
    },
    "rules": {
        "semi": "off"
    }
}
  • 아래의 과제를 구현하기 위해서 fs 모듈을 사용해서 새로 받아오는 메시지를 서버에 저장하도록 만들었더니 기본 룸이 아닌 곳에서 메시지를 post할 경우 서버가 재부팅되면서 기본 룸으로 돌아가버리는 문제가 발생했다. (데이터는 정상적으로 추가되지만 확인하기 위해 해당 룸을 찾아가야 하는 번거로움이 있었다.)

    fs 모듈을 이용하여, 서버가 메시지들의 목록을 파일로 저장할 수 있도록 만드세요. 파일로 메시지들이 저장되면, 서버가 재시작하더라도 다시 메시지 목록을 불러올 수 있게 됩니다.

    • 이 문제로 두시간 넘게 고민한 것 같은데, 원인은 nodemon을 사용해서 서버를 실행시켜서 인 것 같다. post 요청을 처리하면서 database.json 파일에 새로운 데이터를 추가하면, nodemon이 서버 파일이 변경된 것을 확인하고 서버를 재부팅하면서 초기화면으로 돌아오는 것.
    • 해결! socket.io를 사용해서 폴링 방식이 아닌 웹소켓 방식으로 구현하니까 해당 문제가 발생하지 않는다. 정확한 이유에 대해서는 좀 더 고민해보아야 할 것 같다.

더 공부할 것

  • socket.io

내일 할 일

  • Express 학습
  • chatterbox server 리팩토링 (Express 이용)

0개의 댓글