Я бы только добавил более высокую перспективу к тому, что было сказано, и это то, что SSE является моделью публикации-подписки, а не постоянным опросом в случае AJAX.
Как правило, оба способа (опрос и публикация-подписаться) пытаются решить проблему, как поддерживать на клиенте актуальное состояние.
1) Модель опроса
Это просто.Клиент (браузер) сначала получает начальное состояние (страницу) и для его обновления ему необходимо периодически запрашивать состояние (страницу или его часть) и обрабатывать результат в текущем состоянии (обновить всю страницу или сделать ее интеллигентночасть в случае AJAX).
Естественно, один недостаток состоит в том, что, если ничего не происходит с состоянием сервера, ресурсы (ЦП, сеть, ...) используются излишне.Другая причина в том, что даже если состояние меняется, клиенты получают его только в следующий период опроса, а не как можно скорее.Часто нужно оценить хороший компромисс по времени между этими двумя вещами.
Другим примером опроса является ожидание в потоке.
2) Модель публикации-подписки
Этоработает следующим образом:
- (клиент сначала запрашивает и показывает некоторое начальное состояние)
- клиент подписывается на сервер (отправляет один запрос, возможно, с некоторым контекстом, например источником события)
- сервер помечает ссылку на клиента на некоторый его клиентский репозиторий
- в случае обновления состояния сервер отправляет уведомление клиенту на основании ссылки на клиент, который он держит;то есть это не ответ на запрос, а сообщение, инициированное сервером
- хорошие клиенты отписываются, когда их больше не интересуют уведомления
Это SSE или в потокеожидаемое событие, как еще один пример.Как уже говорилось, естественным недостатком является то, что сервер должен знать обо всех своих подписанных клиентах, что, в зависимости от реализации, может быть проблемой.