Kingside — Трансляции без задержек

Трансляции стали быстрее: все идущие раунды обновляются за секунды

Раньше ходы моментально доходили только на 8 самых популярных раундах, остальные обновлялись раз в 5 минут. Теперь эта разница пропала — любая идущая партия на любом раунде получает свежий ход за секунды.

Трансляции стали быстрее: все идущие раунды обновляются за секунды

Раньше в трансляциях на Kingside была видимая разница между «топовыми» раундами, где ходы прилетали моментально, и остальными — они обновлялись раз в 5 минут. С сегодняшнего дня этой разницы нет: любая идущая партия на любом раунде получает свежий ход за секунды.

Почему было медленно

Ходы для трансляций Kingside берёт из Broadcast API Lichess. У этого API есть жёсткое правило: с одного IP-адреса можно держать одновременно не больше восьми подписок на потоки раундов. Раньше все подписки открывал наш сервер — то есть на весь сайт приходилось те же самые восемь слотов. При двадцати-двадцати пяти идущих раундах (а на крупных турнирах бывает и больше) приходилось выбирать: восемь самых популярных получают ходы в реальном времени, остальные догоняют через периодические запросы раз в 5 минут.

Это чувствовалось как «где-то живая доска, а где-то — не пойми что». Разбор менее звёздной партии на боковой доске отставал на минуты от того, что происходило.

Что изменилось

Теперь поток ходов открывает не наш сервер, а сам браузер каждого зрителя — напрямую к источнику. У каждого посетителя свой IP, поэтому ограничение в восемь слотов действует индивидуально на него, а не на весь сайт. Все идущие раунды одинаково доступны для realtime-просмотра, независимо от их популярности. Задержка от совершения хода до появления его на доске — единицы секунд.

Что если прямое подключение не заработает

Не у всех сетей одинаковый доступ наружу: корпоративные firewall'ы, блокирующие расширения, временные сбои интернета — всё это способно закрыть прямой канал. Сайт заметит это сам и переключится на резервный маршрут: обновления пойдут через наш сервер. Задержка в этом режиме — не больше 30 секунд для активно смотримых раундов и не больше 5 минут для остальных. Ситуации «доска висит без данных» нет.

Побочный эффект: инфраструктура стала проще

Внутри пропала целая надстройка, которая раньше решала «кому дать один из восьми слотов»: приоритеты по числу зрителей, механизм удержания уже занятых слотов, чтобы они не прыгали при всплесках интереса, буферы между переключениями. Всё это существовало ради борьбы с узким горлом на нашем IP — теперь горла нет, и надстройка не нужна. Осталась простая петля: сервер обновляет базу раз в 30 секунд для активных раундов (чтобы новый зритель сразу видел свежий снимок), а сам просмотр идёт напрямую от источника.

Меньше кода — меньше поверхности для сбоев.

Что делать зрителю

Ничего. Изменение уже в проде. Откройте любую трансляцию — так это теперь работает.

Comments (0)

No comments yet. Be the first.

Sign in to leave a comment. Sign in