Как я могу эффективно отправлять непрерывный поток событий timeupdate на сервер сокетов?

#angular #sockets #socket.io #system #pusher

#angular #сокеты #socket.io #система #pusher

Вопрос:

У меня есть приложение для обмена видео Angular P2P, и я пытаюсь синхронизировать просмотр видео пользователями.

Мне нужно добавить функциональность для того, чтобы, когда пользователь ищет другое время в видео, он также должен искать других пользователей.

У меня есть следующий код в конструкторе моего компонента:

 this.player.on('timeupdate', () => {


// Send a time update to socket
console.log(this.player.currentTime());
this.comm.timeUpdate(this.player.currentTime());


});
  

Этот подход неэффективен, потому что timeupdate происходит каждую миллисекунду или даже наносекунду, а мой push-сервер socket имеет ограничение в 200 тысяч сообщений / событий в день, и эти события накапливаются очень быстро.

Как мне отправить эти события timeupdate, не исчерпав лимит моего сервера сокетов?

Обновление 1:

-Я еще не развернул приложение, но я ожидаю, что около 50 одновременных пользователей будут смотреть видео. Мне нужно синхронизировать видео в режиме реального времени.

-В настоящее время я использую решение для сокетов Pusher (свободного уровня)

  • Вот код для моей службы связи:

    timeUpdate(currTime ){ this.channel.trigger(‘client-time’, {time: currTime}); }

Комментарии:

1. Сколько пользователей у вас прослушивают эти события? Иногда просто нереально иметь возможность уменьшить количество генерируемых событий и поддерживать ту же функциональность. Какое решение для сокетов вы используете в настоящее время? Можете ли вы поделиться кодом для this.comm.timeUpdate(): ?

2. Я обновил вопрос с подробностями.

3. Лучшим подходом в этом сценарии было бы ограничить скорость ваших клиентских событий. Требуется ли на самом деле отправлять обновление времени каждую миллисекунду? Поймет ли пользователь, если вместо этого вы начнете отправлять эти события один раз в секунду? В качестве альтернативы, вы могли бы рассмотреть возможность отправки события только при существенном изменении. Например, вы могли бы использовать Pusher для отправки событий воспроизведения / паузы, гарантируя, что воспроизведение начнется в одно и то же время, и для того, когда пользователь ищет новое время. Обычное воспроизведение уже синхронизировано, поскольку воспроизведение началось одновременно, так что этого должно быть достаточно.