При передаче большого файла расход памяти зависит от того, насколько чтение опережает запись у получателя. Даже фрагменты по 64 КиБ могут накопиться на целый файл, если беспрерывно готовить следующие части. Объём очереди можно ограничить, связав новое чтение с подтверждением записи у получателя. Тогда медленный получатель заставит отправителя подождать.
Наверное, уже прошёл год с тех пор, как я написал скрипт для трансляции сообщений из Twitter. Изначально я это делал для маркетинговой конференции Digitale, но востребованность трансляции оказалась намного выше. И в качестве очередного примера я добавил трансляцию сообщений о веб-разработке. Но об этом чуть ниже. Потому что начать я хотел бы с грустного.
Порядок сообщений нужно закрепить до их асинхронной подготовки. Шифрование второго сообщения может закончиться раньше первого, и WebSocket получит их уже в обратной последовательности. Очередь должна сохранять место каждого сообщения с самого начала, позволяя готовому результату дождаться своей отправки.
Одним из интерактивных элементов на конференции по маркетингу Digitale была онлайн трансляция twitter-сообщений по хеш-тегу. Сделать это на конференции выпало мне, и по началу я долго искал подходящий вариант в интернете. Такие сервисы как twihoo, twistori не хотят работать с конференциями и брендировать каналы. Именно поэтому мне пришлось написать такой скрипт самому.