Технический разбор объясняет причины задержек при передаче сообщений через Server-Sent Events (SSE). Автор использовал стенд на Python 3.15.0 и zlib 1.3.1, исключив влияние TLS, прокси-серверов и браузерных инструментов для чистоты эксперимента.
Выявлены две основные причины задержек: отсутствие разделителей в потоке SSE и некорректная настройка сжатия gzip. В первом случае клиент получает данные, но не формирует события до получения пустой строки, что приводит к склеиванию нескольких сообщений в одно.
При использовании gzip без промежуточного сброса компрессор накапливает данные и отправляет их только при завершении потока (Z_FINISH). Использование Z_SYNC_FLUSH позволяет выгружать накопленные данные сразу, сохраняя поток открытым для последующих событий.
Для диагностики задержек автор рекомендует отслеживать время получения байтов, появления декодированного текста и формирования событий. Эксперимент подтверждает, что сжатие данных совместимо с SSE при условии правильной настройки синхронизации сброса буфера.


