Ответ 1
Обновленный ответ
Короткий ответ: да, но это дорого.
Длинный ответ:
Этот вопрос не уникален для WebSockets, поскольку WebSockets представляют собой в основном долгоживущие TCP-сокеты с HTTP-подобным рукопожатием и минимальным обрамлением сообщений.
Реальный вопрос: может ли один сервер обрабатывать 1 000 000 одновременных соединений сокетов и какие ресурсы сервера будут потреблять? Ответ усложняется несколькими факторами, но для системы с надлежащим размером (много CPU, оперативной памяти и быстрой сети), а также с настроенной серверной системой и оптимизированным серверным программным обеспечением возможно использование 1 000 000 активных соединений сокетов.
Количество соединений не является основной проблемой (в основном это вопрос настройки ядра и достаточной памяти), это обработка и отправка/получение данных в/из каждого из этих соединений. Если входящие соединения распространяются в течение длительного периода времени, и они в основном неаккуратно или редко посылают небольшие фрагменты статических данных, то вы, вероятно, можете получить намного больше, чем даже 1 000 000 одновременных соединений. Однако даже в таких условиях (медленные соединения, которые в основном неактивны) вы все равно столкнетесь с проблемами сетей, серверных систем и серверных библиотек, которые не настроены и не предназначены для обработки большого количества подключений.
См. ответ Alessandro Alinone о приблизительном использовании ресурсов для 500 000 подключений.
Ниже приведены некоторые более старые, но все еще применимые ресурсы, чтобы прочитать, как настроить сервер и написать серверное программное обеспечение для поддержки большого количества подключений: