December 23rd, 2014

усы2

SSE vs. WS

Периодически встречаю упоминания, чуть ли не с гордостью, что вот мол мы для синхронизации веб-приложения гоняем server-sent events. Подразумевается, что это осознанный выбор, между WebSocket и SSE выбрали SSE. Я пытаюсь составить для себя карту факторов, которые к такому решению приводят. Сам я вижу вот что:

− SSE односторонний, WS двухсторонний
− SSE не поддерживается IE и мобильным IE, даже самыми последними. WS есть уже везде
− WS умеет binary payload, SSE не умеет (в худших традициях — newline-delimeted протокол). Серьезно, вот как JSON выглядит on the wire:
data: {\n
data: "msg": "hello world",\n
data: "id": 12345\n
data: }\n\n

+ SSE умеет сжатие через gzip, WS сжатие в процессе стандартизации
+ В js API у SSE идут встроенными такие вещи, как event id (дедупликация при реконнекте) и event type (subscribe topic). С другой стороны, это делается тривиально

Все упоминания о выборе между WS и SSE, которые я встречал, были примерно такого толка: «да оно нам как-то и не надо, нам SSE достаточно». Это больше не на осознанный выбор похоже, а на какую-то подсознательную боязнь WS — учитывая минусы SSE. Или я проглядел какие-то потенциальные плюсы?