Я создаю программу синхронизации файлов (похожую на Dropbox), используя node.js на обоих концах. Мне нужно, чтобы потенциально тысячи клиентов запрашивали данные одновременно.
Вот моя текущая система:
- Сервер отправляет клиенту уведомления через веб-сокет (файл был обновлен)
- Клиент загружает в очередь и делает HTTP-запрос в режиме ожидания
Я буду обслуживать данные в виде сжатых кусков, скажем, по 50 МБ каждый, поэтому издержки HTTP-запроса (заголовки) незначительны.
Если бы я использовал веб-сокеты для запросов и push-уведомлений, было бы:
- Заметно общее улучшение скорости? (уменьшенная задержка, аутентификация и т. д.)
- Дополнительные издержки на сервере для поддержания открытых соединений?
- Проблемы с передачей двоичных данных?
Я думаю, что мне нужно получать уведомления через выделенную веб-розетку, потому что я не хочу, чтобы они ставились в очередь на сервере во время загрузки (много накладных расходов).
Примечание: Эти веб-розетки будут открыты в течение длительного времени, пока система клиента включена.
РЕДАКТИРОВАТЬ: я буду использовать веб-сокеты на другом http-сервере на разных портах, чтобы переместить их на разные ядра ЦП. Я мог бы потенциально открыть тысячи (если не сотни тысяч) одновременных веб-сокетов ...