Отправка запроса с сервера в браузер через ajax называется длинным опросом, или «кометой». Это проверенная техника, но теперь без подводных камней.
Во-первых, соединение должно оставаться открытым для каждого пользователя. Это много накладных расходов, так что это должно быть сделано с чем-то вроде NodeJS. Тем не менее, длительный опрос должен сбрасываться каждые 20 с или около того, что приводит к изменчивому коду. Более новые браузеры вводят веб-сокеты, которые улучшают вещи, но требуют структуры с механизмами резервирования. Вопрос в том, стоит ли оно того для вашего приложения.
В вашей ситуации я бы применил тот же механизм тайм-аута в JavaScript. Таким образом, пользователь получает приятное сообщение, когда время сеанса заканчивается в JavaScript, и сервер применяет тайм-аут, если пользователь по какой-то причине обходит браузер.