muzikant777
@muzikant777
PHP/Vue разработчик

Как Telegram так быстро реагирует на прочтение сообщения?

Есть два запущенных telegram-клиента: один на телефоне, другой на десктопе.
Приходит сообщение, телефон начинает проигрывать звук push-уведомления.
Активирую окно десктоп-клиента и звук на телефоне мгновенно прерывается.
Где можно почитать, как реализуется подобное?
Выглядит как магия!
  • Вопрос задан
  • 330 просмотров
Решения вопроса 2
@rPman
Я не знаю как сделано в телеграмме, вполне возможно что просто быстрый сервер,.. к тому же даже размещение сервера на другом конце света даст пинг в 0.2 секунды, для человеческого восприятия это - мгновенно.

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

p.s. возможно вы воспитаны на тормозах http rest архитектуры, где для обмена сообщениями используются периодические опросы вместо постоянно открытого tcp или даже udp соединения?
Ответ написан
Комментировать
@pfg21
ex-турист
клиент организует до сервера web push канал - сервер получает возможность самому инициировать передачу данных клиенту, не ожидая очередного опроса от клиента.
а далее все работает элементарно. клиент передает серверу информацию, к примеру, "письмо № 8888888 прочтено" сервер практически мгновенно рассылает ее всем подключенным клиентам.

задержек опроса нет - не будет же клиент опрашивать сервер каждые 10 мс. остаются задержки только прикладного плана а они решаемы мощными серверами и качественным кодом.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Поиграйте в контрстрайк или q3, посмотрите как они мгновенно обрабатывают десятки событий в секунду от десятка клиентов.
На технологиях прошлого тысячелетия.
Ответ написан
Jump
@Jump
Системный администратор со стажем.
К серверу подключены несколько клиентов - телефон, ПК
Клиенты изредка запрашивают данные с сервера.
Если кто-то вас вызывает - оба клиента начинают внимательно слушать идет постояный обмен данными.
Пока идет поток уведомлений с сервера - проигрывается вызов.
Как только вы взяли трубку на ПК - сервер перестал слать вызов, соответственно звук вызова на телефоне пропал.
По времени - это примерно пинг от вас до сервера + время реакции сервера.
Если пинг хороший вы задержки не различите.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы