скажем, вы посещаете веб-сайт, и веб-сайт постоянно обновляется. Ваш браузер должен постоянно обновлять данные, которые вы просматриваете, это означает, что браузер должен поддерживать связь с сервером и получать обновления.
вы можете использовать ajax для отправки запросов каждые несколько секунд, каждый раз получая больше данных с сервера. Проблема в том, что вам нужно сделать много вызовов ajax, и вы открываете соединение (сокет) для каждого, и, в конце концов, это очень медленный процесс. если интервал между запросами большой, у вас будет задержка между обновлениями на серверах и обновлениями в вашем браузере.
чтобы решить эту проблему, мы можем манипулировать HTTP-вызовами - держать запрос (соединение) открытым и непрерывно отправлять данные. таким образом, когда сервер хочет что-то отправить клиенту (браузеру), существует открытое соединение, и ему не нужно указывать путь к следующему вызову ajax через браузер.
HTTP-серверы имеют тайм-аут на запросах, поэтому незадолго до истечения времени запроса браузер закроет его и создаст новый.
другой (лучший) метод - использование протокола XMPP, который используется в чатах типа Facebook и MSN.