Я рассматриваю несколько вариантов для передачи данных с сервера клиенту для моего веб-приложения в режиме реального времени.
Я реализовал опрос (каждый клиент отправляет HTTP-запросы на сервер через каждые 30 секунд.) Приложение, которое действительно не масштабируется после того, как в него входят 10 пользователей. Это приложение. построен с использованием MySQL, PHP, HTML и jQuery.
Не стесняйтесь предлагать, какой из них лучше рассмотреть ниже: APE Vs node.js
Я настоятельно рекомендую вам взглянуть на Socket.IO . Это комплексное решение для push-сервера, которое включает в себя как библиотеку на стороне сервера (написанную в node.js), так и клиентскую JS-библиотеку, выполненную в виде кросс-браузера. Я не вижу причин для того, чтобы вы реализовали свой собственный код для того, чтобы делать то, что уже сделано, работать и тестироваться.
Единственный случай, который socket.IO не будет обрабатывать, – это ваш третий запрос, но это невозможно в любом случае. Если я правильно вас понимаю, вы бы хотели, чтобы два клиента общались без помощи стороннего сервера? Вы не можете изменить HTTP в P2P, по крайней мере, не сейчас.
Если, с другой стороны, вы хотели общаться с двумя пользователями через ваш сервер (что-то вроде частного чата с двумя людьми), что вполне возможно с помощью socket.io.
Несмотря на то, что сейчас все работают в направлении node.js, мы сделали приложение для чата на основе APE, и мы очень этому довольны.
APE обеспечивает то, что вы ищете достаточно «из коробки», поскольку это комбинация JS на стороне сервера и клиентская инфраструктура APE_JSF, которая предоставляет функциональные возможности (и многое другое), которые вы получаете из socket.io.
В этом проекте мы обрабатываем ~ 9000 одновременных пользователей с сообщениями в режиме реального времени . Сервер nginx помещается перед APE для обеспечения поддержки deflate / gzip
Эта конфигурация (без nginx также) не будет иметь проблем с вашими требованиями, даже на машине с «не очень высокой».
Поскольку вы можете передавать данные на «канал» или на одного пользователя, вы должны иметь возможность достичь именно того, что вы ищете с помощью APE, от трансляций до прямых сообщений.
Если вы используете Apache в существующем стеке, то, как вы уже сказали, будут проблемы с масштабированием пользователей, даже если вы используете длительный опрос вместо непрерывного. Решение может заключаться в использовании высокопроизводительного веб-сервера, такого как nginx , для обработки многих параллельных подключений.
С другой стороны, node.js создается для такого рода параллелизма соединений, и есть пакеты, такие как socket.io , что значительно упрощает вашу жизнь разработчика, поскольку предлагает различные варианты транспорта с резервными решениями и другими полезными функциями.
Я бы не рекомендовал ape для крупномасштабных приложений, это просто отлично подходит для чат-приложений, но поскольку массовый транспорт данных касается браузера клиента, он начинает замедляться и раздавливаться через некоторое время.