Как надежно выполнить код при закрытии страницы (например, сообщение «отключено» в чате сайта) - PullRequest
1 голос
/ 03 марта 2012

У меня есть чат на 2 человека (с нами и любыми опрашивающими клиентами), и я хотел бы отобразить « $ client отключено», когда они отключаются любым способом, включая:

  • Нажатие назад в браузере
  • Закрытие окна
  • Закрытие браузера через диспетчер задач

Мне еще предстоитнайти надежный способ (пытаясь с помощью свойств JavaScript onunload и onbeforeunload) справиться с этим, особенно если используется диспетчер задач.

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

Но в этом нет элегантности, и "вероятно, отключен" isn 'действительно убедительный вывод.

Как бы вы поступили так, чтобы сообщение об отключении появлялось только тогда, когда пользователь отключился.

1 Ответ

1 голос
/ 03 марта 2012

на самом деле, вы не можете реализовать это в HTML / JS / CSS, где, когда пользователь уходит, он отключается - ну ... неэффективно.

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

Есть то, что они называют комета - термин, который охватывает методы «постоянной связи», одним из которых является опрос.Также в статье рассматриваются методы «среднего уровня», где вы можете использовать плагины, такие как flash, и их потоковые возможности.

...