Если я вас правильно понял, этот механизм называется Long Pool
если кратко: с js на php отправляете запрос, на стороне php скрипта задерживаете ответ до возникновения события, данные которого нужно отправить обратно (то есть прислать js-скрипту ответ) с помощью цикла
$event_data = false;
do {
//условно проверяем/получаем нужные данные
$event_data = get_event();
sleep(1);//устанавливаем перерыв между итерациями в 1 секунду, что-бы не нагружать сильно сервер
} while(!$event_data);
echo $event_data;
die();
как только js-сторона получает ответ - рекурсивно отправляет новый ajax-запрос, что-бы получать новые события,
а полученные данные обрабатываются так как вам нужно на стороне клиента