Google для "COMET", вы получите много ссылок. Вообще говоря, вам нужна серверная структура, которая может парковать запросы и забирать их, когда у них есть данные для возврата. Например, базовый сервлет Java будет поддерживать поток для каждого запроса, а если вы «запарковали» запрос (сделав некоторое ожидание), поток будет приостановлен вместе с запросом. Таким образом, вы можете иметь столько клиентов, ожидающих запроса, сколько у вас могут быть потоки на сервере, чего недостаточно для больших приложений.
Итак, по крайней мере, вам нужна система, в которой потоки могут быть повторно использованы при приостановке запросов. Поскольку push снова становится популярным, фреймворки для его поддержки расцветают, поэтому без дополнительного контекста сложно порекомендовать определенный сервер / фреймворк.
Сказав это :-), в Play Framework (http://www.playframework.org/) есть пример приложения чата, использующего три варианта «push». Во всяком случае, стоит изучить код (предполагая, что вы знаете Java), чтобы получить чувство различных решений.