Ajax Push Engine (APE) против Node.js - PullRequest
       29

Ajax Push Engine (APE) против Node.js

21 голосов
/ 05 сентября 2011

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

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

Пожалуйста, предложите, какой из них будет лучше, учитывая приведенные ниже требования - APE Vs node.js

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

Ответы [ 4 ]

17 голосов
/ 05 сентября 2011

Я настоятельно рекомендую вам взглянуть на Socket.IO .Это полное решение для push-уведомлений сервера, которое включает в себя как серверную библиотеку (написанную в node.js), так и клиентскую JS-библиотеку, созданную кросс-браузерным способом.Я не вижу смысла для того, чтобы вы реализовали свой собственный код для выполнения того, что уже сделано, работает и протестировано.

Единственный случай, когда socket.IO не обработает, - это ваш третий запрос, но в любом случае это невозможно.Если я вас правильно понимаю, вы бы хотели, чтобы два клиента общались без помощи стороннего сервера?Вы не можете изменить HTTP на P2P, по крайней мере, сейчас.

Если, с другой стороны, вы хотите общаться с двумя пользователями через ваш сервер (делать что-то вроде личного чата из двух человек), что вполне выполнимо с помощьюsocket.io.

14 голосов
/ 29 сентября 2011

Несмотря на то, что все сейчас бегут к node.js, мы создали приложение для чата на основе APE , и мы очень довольны им.

APE предоставляет то, что вы ищете, совершенно «из коробки», поскольку оно представляет собой комбинацию JS на стороне сервера и клиентской инфраструктуры APE_JSF, которая предоставляет функциональные возможности (и более), которые вы получаете из socket.io.

В этом проекте мы обрабатываем ~ 9000 одновременно работающих пользователей с сообщениями в реальном времени . Сервер nginx размещен перед APE для обеспечения поддержки deflate / gzip

Эта конфигурация (также без nginx) не будет иметь проблем с вашими требованиями, даже на "не очень высоком" компьютере.

Поскольку вы можете передавать данные на «канал» или отдельному пользователю, вы должны быть в состоянии достичь именно того, что вы ищете с APE, от широковещательных рассылок до прямых сообщений.

4 голосов
/ 05 сентября 2011

Если вы используете Apache в своем существующем стеке, то, как вы уже сказали, будут проблемы с масштабированием пользователей, даже если вы используете длинный опрос вместо непрерывного. Решением может быть использование высокопроизводительного веб-сервера, такого как nginx , для обработки множества одновременных подключений.

С другой стороны, node.js создан для этого типа параллелизма соединений, и существуют пакеты, такие как socket.io , которые могут значительно облегчить жизнь вашему разработчику, поскольку он предлагает различные виды транспорта. с запасными решениями и другими полезными функциями.

0 голосов
/ 18 августа 2012

Я бы не рекомендовал ape для крупномасштабных приложений, это прекрасно для приложений чата, но в том, что касается массовой передачи данных, браузер клиента через некоторое время начинает замедляться и разрушаться.

...