Недавно задался вопросом, как работал сайт plug.dj? Для тех кто не знает, это такой сервис который позволяет посредством youtube формировать плейлист, который играет на подобии стриминга.
Например, когда заходит новый юзер на страничку с плейлистом, то у него видео начинает играть не с начала, а с того места сколько осталось прослушать текущую песню.
Вот мне интересно какие технологии необходимы чтобы подобное реализовать.
Например плейлист ютуба можно получить через их апи, у подобных сервисов часто есть апи, у гугловских сервисов апи очень функциональное но сложное.
Запомнить трек можно парой способов.
Записать позицию в куки\локалстор
Отправить на сервер инфу через якс\сокеты
Писать время в адресной строке черех хистори апи.
Из всех вариантов, наиболее красивым мне кажутся сокеты( WebSocket, или Long Polling, или Comet). Сокеты позволят синхронизировать один плейлист для каждого пользователя, на разных устройствах илм браузерах, и еще много чего интересного.
Спасибо за Ваш ответ. Если я правильно понял, то Вы имеете в виду хранить текущую позицию трека у каждого юзера который сейчас слушает плейлист и отправлять на сервер? Разве не получится что-то вроде рассинхронизации?
Alexander Litvinenko: Получается, что каждый пользователь будет отсылать на сервер информацию о текущем времени трека. И может ведь получится ситуация, что у одного юзера будет время 1:31 а у друго 1:32? И выходит, что оба отсылаем на сервер?
Почему же, вы запомните время для каждого из них, отдельно для каждого. А если юзер один но на двух устройствах, то можно хранить и отдельное время на разных устройствах. А то что два запроса ушли на сервер - нестрашно, как бы нам не хотелось, все равно один из запросов будет обработан первым.
Alexander Litvinenko Ага, теперь понял, спасибо! А как в таком случае синхронизировать плейлист для всех пользователей? Например, чтобы новый пользователь зайдя не слушал трек сначала? Или просто поставил на паузу обновил страницу и он начал играть не с места где поставил паузу а с текущего положения?
bgr11n: ничего не меняется, просто вместо сохранять персонально для каждого, хранится одно значение на всех. А если это что-то вроде радио, то и синхронизировать ничего не надо, ведь сервер вещает всем одно и тоже.