[TIL] 2022/02/07

yongkini ·2022년 2월 7일
0

Today I Learned

목록 보기
117/173

TIL

  • Polling(폴링)이란? : 본래 웹 통신(HTTP or HTTPS)에 있어서 socket.io 등을 이용하는 것이 아니라면 모든 통신은 100% '실시간'이 아니라는 것은 알고 있었다. 무슨 말인가하면, 예를 들어, 정각 9시에 수강신청을 하는 우리들의 대학시절을 생각해보면, 정각 9시에 우리들로 하여금 버튼을 누를 수 있도록 허용하는 로직을 만들어야한다. 이 때, 우리들이 보는 브라우저에서 수강 신청 버튼이 제대로 동작을 하려면 대학교 서버(?)와 끊임없이 서버 시계로 정각이 됐는지 묻는 과정이 필요하다. 이 때, 이것이 실시간으로 계속 연결이 돼있어서 정각이 되면 수강 신청 버튼이 활성화되는 것이 아니라 예를 들어 정각 5초전에 밀리초 단위로 폴링을 해서(즉, 서버에게 끊임없이 요청을 보내서) 서버 몇시야? 정각이야? 를 묻고, 만약 서버가 이 응답에 대해 yes를 하는순간 버튼이 활성화 되는 원리라는 것이다. 하지만, js에서 setInterval 함수를 써서 리렌더링을 자주하게되면(DOM을 자주 건들게 되면) 브라우저에 부하가 일어나듯이 폴링 주기를 너무 짧게 설정해놓게 되면 당연하게도 서버에 부하가 일어나게 될 것이다. 하지만 그렇다고 폴링 주기를 너무 길게 설정하게 되면 사실상 실시간 통신의 역할을 하지 못하게 된다. 앞선 예로 따지면 이미 서버 시간은 정각 9시를 가리켰는데도 몇몇 학생들은 수강 신청을 할 수 없는 상황이 발생할 수 있다.
  • setInterval 관련해서 잘 정리해놓은(useInterval이란 hooks도 있다고함) 블로그 링크
  • 'js 유저가 브라우저 옮겼는지 아는법' 내일은 이것에 대해서 알아봐야겠다. 정확히 말하면, 나는 지금 벨로그에 글을 쓰기 위해 'https://velog.io/write?id=37cfc77b-90f9-41c2-b31b-8794de24f6c3' 라는 페이지에 '머물고 있다'. 근데 개발자가 유저가 해당 페이지에 머물고 있는 것을 확인하다가 예를 들어, 쉬고 싶어서 유튜브로 창을 옮겼을 때 페이지에 특정한 인터랙션을 발생시키고 싶다면 어떻게 해야하는지, 즉, 유저가 다른 페이지를 보고 있는지(해당 페이지를 떠났는지)를 감지하는 방법이 있는지 알아보자.
profile
완벽함 보다는 최선의 결과를 위해 끊임없이 노력하는 개발자

0개의 댓글