Ajax Push Engine (APE) Vs Node.js

Я рассматриваю несколько вариантов для передачи данных с сервера клиенту для моего веб-приложения в режиме реального времени.

Я реализовал опрос (каждый клиент отправляет HTTP-запросы на сервер через каждые 30 секунд.) Приложение, которое действительно не масштабируется после того, как в него входят 10 пользователей. Это приложение. построен с использованием MySQL, PHP, HTML и jQuery.

Не стесняйтесь предлагать, какой из них лучше рассмотреть ниже: APE Vs node.js

  1. Должна иметь возможность обрабатывать одновременно не менее 400 одновременных подключений
  2. Сервер должен иметь возможность передавать данные всем этим клиентам.
  3. Клиенты будут отправлять данные между собой.

Я настоятельно рекомендую вам взглянуть на 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 для крупномасштабных приложений, это просто отлично подходит для чат-приложений, но поскольку массовый транспорт данных касается браузера клиента, он начинает замедляться и раздавливаться через некоторое время.