Термин, который вы ищете, называется « Comet », и есть разные способы его достижения, каждый из которых имеет множество реализаций, фреймворков и учебников по коду. Хорошим началом будет поиск в Google «Кометы» и программного обеспечения, которое вы планируете использовать.
Edit:
Более новой технологией для реализации этого стиля общения является " WebSocket ". Это приводит к тому, что HTTP-соединение (скажем, сделанное AJAX-запросом) ведет себя не так, как HTTP-соединение (когда клиент отправляет данные на сервер, а сервер может только возвращать данные в ответ на отправку), и больше похоже на обычный TCP соединение (где обе стороны могут отправлять и получать данные в любое время).