2013-01-11 2 views
0

스트림 URL을 포함하여 내 서버에있는 노래에 대한 데이터를 반환하는 API를 만들었습니다. 클라이언트가 API를 호출하면 데이터를 가져와 플레이어에서 노래 스트리밍을 시작합니다.대용량 재생 목록에서 임의 곡의 클라이언트 데이터를 보내는 방법은 무엇입니까?

그러나 API에 대한 호출을 여러 클라이언트에서 수행 했으므로 최근에 들었던 재생 목록의 곡 임의의 파일에 대한 데이터를 반환하는 가장 좋은 방법은 무엇입니까? 2 천 곡의 노래가 있지만 여전히 확장되고 있습니다.

다음

내가 일을 계획하고 무엇을 :

그래서 내 질문는 다음이 좋은 방법인지 여부입니다. 각 클라이언트에 대한 세션을 설정하고 초기 요청에서 모든 노래를 가져 와서 임의의 목록을 만들고 세션 ID와 함께 캐시에 저장 한 다음 모든 요청에 ​​대해 세션 ID를 확인하고 다음 곡 데이터를 반환 하시겠습니까?

최근 재생 된 노래를 재생하지 않도록하기 위해 이전 50 곡의 내역을 데이터베이스에서 듣고 노래 ID 비교를 수행하고 일치하는 경우 다음 노래를 가져 옵니?

이 방법이 효과적인 방법입니까?

+0

자바 스크립트 Ajax를 사용하여 노래 데이터를 가져올 수 있습니까? – Mooseman

+0

그래,하지만 API를 호출하는 방법은 문제가 아니라 API 응답에서 임의의 것을 보내기 위해 백엔드에서 노래 목록을 무작위로 추출하는 방법입니다. 미안하지만 질문이 명확하지 않은 경우. –

+0

내 대답이 당신이 찾고있는 것인지 알려주십시오. 그것을 개선하기 위해 질문을 편집하십시오. – Mooseman

답변

0

EDITED : 서버 정보 더보기

사용자의 감상 기록 (버퍼, 크기 X)에 X 곡을 저장합니다. 임의의 노래를 요청하는 단일 기능을 구현하십시오. 클라이언트가 새로운 임의의 노래를 필요로하는 경우 :

  1. 는 데이터베이스
  2. 푸시 청취 역사 버퍼에 노래 ID에서 임의의 곡을 선택합니다.
  3. 클라이언트

당신은 어쨌든 서버에서 사용자 데이터를 저장하려는 경우 무작위로 생성 된 노래 목록을 관리 할 필요가 실제로 없습니다에 데이터를 반환

  • .

    그렇지 않으면 많은 부분을 알게됩니다. 세션을 사용하여 사용자를 식별하십시오.

  • +0

    나는 이것 역시 생각하고 있었지만, 사용자를 위해 무작위로 추출 할 수천 곡이 있어야한다는 제약이있었습니다. 모든 클라이언트에게 무작위로 1000 곡의 노래 목록을 제공하는 것이 좋을 것이라고는 생각하지 않았습니다. –

    +0

    물론 사용자에 따라 다르지만 한 번에 하나의 노래로 진행할 것입니다. 한 번에 하나의 노래를 클라이언트에 보냅니다. 클라이언트가 새로운 임의의 노래를 요청하면 이전에 듣던 노래 ID를 HTTP 요청에서 봅니다. 사용자가 이미 듣고있는 노래 수에 따라 새 노래를받는 속도가 느려지 긴하지만 – supertopi

    +0

    랜덤 화 작업을 잘하려면 기본적으로 서버 측에 사용자 계정을 저장해야합니다. 이 솔루션은 또한 실행 가능하지만 내가 말했듯이 API 사용자에 따라 다릅니다. – supertopi

    0

    mysql과 같은 데이터베이스 또는 노래와 ID를 연결하는 것으로 가정하면 임의의 숫자를 생성하고이를 사용하여 데이터베이스에서 임의의 노래를 선택할 수 있습니다. 모든 ID 기반 데이터 저장소가이를 위해 작동하며 확장 성이 뛰어납니다.

    SELECT * FROM songs WHERE song_id>=Y LIMIT 1 
    

    귀하의 ID 격차를 허용합니다 : 당신이 가장 높은 노래 ID는 X 알고있는 경우

    후 Y. (가)이 같은 쿼리를 수행 호출, 1과 X 사이의 난수를 생성 정말 빠를 것입니다. 당신은 다른 테이블에서 연주 된 노래의 로그를 유지하고이를 필터링 할 수 있습니다. 쿼리에서 결과를 반환하지 않으면 Y = X-Y와 같은 난수를 반전 한 다음 쿼리를 다시 실행합니다.

    관련 문제