@klinch21

Как Telegram доставляет данные до клиента?

Доброй ночи, мог бы мне кто-нибудь подсказать как именно сервера мессенджеров, например Телеграма, общаются с клиентами?
Все что интересует, это каким образом ПКшный клиент телеги (windows/linux) получает новую порцию данных от сервера (сообщения, посты в каналах телеги и прочее).

Как я могу предположить, клиент телеграма открывает tcp/udp соединение по которому данные и передаются, все это приправлено разными протоколами защиты, конечно же данные в шифрованном виде и так далее. Но по сути держать сотни тысяч соединений keep-alive достаточно дорого, особенно когда новых данных не приходит и доставлять нечего.
Или же работает другой вариант, когда клиент сам пробрасывает порты через роутер (по типу upnp) и начинает слушать нужный порт на уровне ос, сервер сам инициирует tcp/udp соединение к клиенту, когда появились новые данные для доставки, что по сути намного выгоднее.

В общем, был бы очень признателен, если бы умные люди объяснили как это работает на примере Телеграма.
  • Вопрос задан
  • 537 просмотров
Решения вопроса 1
@rPman
Именно, держат открытыми сокеты, это не дорого, даже вебсокет соединения (а они чуть сложнее) одна машина может удерживать миллионами.

В общем случае у телеграмма много серверов плюс есть прокси-сервера, все они держат подключения (клиент -> сервер) и сервер решает кому о чем сообщать.

Для мобильных систем, так уж сделаны операционные системы, чтобы они просыпались по сигналу сервера, вместо разработки своей инфраструктуры (что даст лишнюю нагрузку на мобильники и их батарейки) используют push систему от эпл или гугла, кстати во время блокировки телеграмма роскомнадхором, это использовалось как инструмент доставки служебных сообщений, так как ее блокировка полностью блокировала бы работу всех мобильников в стране.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы