© 2021 WebHive

Разбираемся с Server-sent events

Открыл для себя новую технологию — Server Sent Events (SSE) по взаимодействию браузера с сервером. Некий аналог WebSockets, но судя по примерам гораздо проще. Есть правда одно ограничение — сообщения посылаются только от сервера клиенту, но за его простоту можно все простить.

Собственно не вижу большого смысла описывать технологию еще раз своими словами — все уже сделано до нас. Приведу несколько ссылок с описанием и примерами.

Как ни странно оказывается эта технология появилась позже WebSockets. В связи с этим ожидал увидеть что-то более продвинутое. Однако по факту разобравшись с этой технологией поглубже был разочарован.

По моему мнению это какой-то «marketing bullshit» — на самом деле сама технология представляет собой ничто иное как банальный поллинг, но встроенный в браузер. Причём поддерживается не всеми браузерами — как минимум отсутствует подержка в IE (есть библиотека которая решает эту проблему).

Итак — примерно раз в 3 секунды (период можно настроить) посылается запрос на сервер и опрашивает его. По результатам запроса генерируется событие. Вот так вот все просто. Собственно такой вариант с периодическим опросом сделает любой школьник на коленке за пару часов, причем обеспечив кроссбраузерную совместимость. Совершенно неясно какой было смысл создавать из этой поделки какую-то отдельную технологию и двигать её в массы.

В качестве какого-то минимального плюса можно только отметить, что в случае использования SSE не нужно дополнительного кода (все уже встроено в браузер), но на мой взгляд это с лихвой компенсируется отсутствием поддержки всеми браузерами и как ни крути, а придется таки подключать для совместимости дополнительную библиотечку.

Ну и по сравнению с WebSockets SSE работает через HTTP —, но опять же довольно слабое преимущество.

В общем очередное разочарование.

Ну и еще несколько ссылок по теме:

UPDATE:

Хмм в комментах некто Anton Furs надавал мне по щам и как оказалось совершенно справедливо. Пришлось более детально углубиться в вопрос и таки разобраться что к чему. Действительно — поллинга тут нет. Про 3 секунды я тут имел в виду не переустановку соединения, а именно период опроса, но это уже не особо и важно — данные таки приходят от сервера через push.

C поддержкой браузерами ситуация у SSE (66%) по прежнему хуже чем у WebSockets (74%) , хотя и некритично.

Ещё одним плюсом SSE который нарыл — заявлено, что использование SSE позволяет экономить энергию, что особенно актуально на мобильных устройствах (Amongst other benefits, this can result in significant savings in battery life on portable devices). Хотя думаю, что это актуально для любой push технологии.

В общем отношение в теме сменилось на умеренно-оптимистичное. Стоит попробовать.

После некоторых раздумий пост решил оставить как памятник собственному невежеству.

Комментарии