개발자

강의 재생시간 실시간 업데이트 방식이 궁금합니다.

2024년 03월 14일조회 170

저는 현재 강의 서비스 프로젝트를 만들어보는 중입니다. 강의 영상은 youtube에서 제공하는 iframe api로 가져와 임베딩하고 있고 영상을 재생 중일 때만 setInterval을 통해 1분마다 재생 시간이 올라가도록 구현하였습니다. 재생 시간을 추적하는 이유는 영상을 다 시청했는지를 확인하기 위함입니다.(예. 20분 영상을 최소15분 이상 재생했는지 확인) 요구사항은 사용자가 해당 페이지에 나갔다 들어오더라도(혹은 외부 디바이스를 통해 들어오더라도) 이전까지 시청했던 재생 시간을 복구하여 해당 값부터 재생 시간을 계산하도록 하는 것입니다. 우선 제가 사용한 방식은 setInterval 을 통해 1분마다 state가 초기화를 시키되 곧바로 서버에 POST 요청으로 해당 사용자의 재생시간을 업데이트 시키는 방식입니다. 여기서 궁금한 점은 이러한 방식으로 진행하는 것이 맞는지, 아니라면 맞는 방식은 어떤 것인지입니다. 1분마다 서버로 요청이 가는 것이 아무래도 서버에도 DB에도 부하가 많이 가지 않나 싶어서 질문드립니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 2

Munsi님의 프로필 사진

저는 웹 개발자는 아니지만 심심해서 한 강의 사이트를 엣지 브라우저 개발자 도구로 살펴봤습니다. 이 사이트는 재생 진행 상황을 아래 두 시점에 보냅니다. (post) 1. 75초 주기 2. 재생 페이지를 벗어날 때 1분 단위로 post 하는 것이 부하가 심하지 않을까 궁금해 하셨는데 제 생각엔 괜찮을 것으로 보입니다.

강창룡님의 프로필 사진

강창룡

작성자

광운대학교 전자통신공학과2024년 03월 15일

감사합니다!! 저도 좀 찾아보면서 개발자 도구로 살펴봐야겠네요...!

kevin님의 프로필 사진

포커스 아웃이나 윈도우 비활성이벤트를 적절하게 활용해서 서버에 저장을 하는게 바람직하다고 봅니다 실시간으로 저장은 일단 로컬스토리지등을 활용하시는것이 좋을것 같아요

강창룡님의 프로필 사진

강창룡

작성자

광운대학교 전자통신공학과2024년 03월 15일

아 정말 그렇게 해도 되겠네요! 조금 감이 잡힌 것 같아요 감사합니다!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 03월 14일

당신이 웹사이트를 설계하는데 있어서의 주요 고려사항은 서버와 DB에 부하를 주지 않으면서도 사용자가 전체 비디오를 시청했는지 확인하는 것입니다. 현재 당신의 접근 방식은 매분마다 서버에 POST 요청을 보내는데, 이것은 어느 정도 리소스를 소비할 수 있는 방식입니다. 데이터 베이스 호출을 줄이는 한 가지 방법은 "debouncing" 이라는 기법을 사용하는 것입니다. 이것은 특정 조건을 만족할 때까지 함수 호출을 지연시키는 프로그래밍 기법으로, 연속적인 함수 호출에서 마지막 한 번만 실제로 실행됩니다. 예를 들어, 당신의 경우 사용자가 비디오를 보는 동안 최소 15분 간격으로 데이터베이스 업데이트를 할 수 있습니다. 그러나 이런 종류의 실시간 업데이트에 대해 완전히 확실한 방법은 없습니다. 어떤 상황에서든 최적의 해결책을 찾으려면 여러 가지 접근방식을 실험해 보고, 다른 옵션들과 그 성능/용량/복잡성 등의 장단점을 비교해 봐야합니다. 또한 사용자가 페이지를 나가거나 다른 장치에서 접근하게 되면 재생 시간을 복구하는데 있어서, 이는 일반적으로 로컬 스토리지나 쿠키를 사용하여 이전의 재생 기록을 저장하고 가져오는 방식으로 처리될 수 있습니다. 그럼에도 불구하고, 중요한 사용자 데이터(특히 학습 진도와 같은)의 경우 서버에 저장하는 것이 안전할 수 있습니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!