Keep-alive просто держит TCP-сокет открытым, поэтому каждый раз, когда вы опрашиваете, вы экономите накладные расходы на установочные / разрывные пакеты TCP - но вам все равно придется опрашивать.
Однако «длинный опрос» - это стратегия для веб-сервера для передачи уведомлений клиенту. По сути, клиент выдает запрос GET, но вместо немедленного ответа веб-сервер ждет, пока у него появится уведомление для отправки, и в этот момент он отвечает на запрос GET. Это устраняет необходимость в прохождении пакетов по проводам в целях опроса и сохраняет соединение без состояния, что, как вы правильно заметили, является одной из целей протокола.