AJAX Push Engine (APE) против Node.js
Вопрос
Я рассматриваю несколько параметров для передачи данных с сервера на клиент для моего веб -приложения в режиме реального времени.
Я внедрил на основе опросов (каждый клиент отправляет HTTP -запросы на сервер через каждые 30 секунд.), Которое на самом деле не увеличивается после того, как 10 пользователей. Это приложение. построен с использованием MySQL, PHP, HTML и jQuery.
Пожалуйста, предложить, какой из них будет лучше, учитывая требования ниже - ape vs node.js
- Должен иметь возможность обрабатывать не менее 400 одновременных соединений одновременно
- Сервер должен иметь возможность разжигать данные для всех этих клиентов.
- Клиенты будут отправлять данные между собой.
Решение
Я настоятельно рекомендую вам взглянуть на Сокет.io. Анкет Это полное решение для Server Push, которое включает в себя как библиотеку на стороне сервера (написанная в node.js), так и библиотека клиента JS, которая сделана в браузере Cross. Я не вижу причин для вас внедрить свой собственный код для того, чтобы делать то, что уже сделано, работает и протестирована.
Единственный случай, с которым не будет обработать Socket.io, - это ваш третий запрос, но в любом случае это невозможно. Если я правильно понимаю, вы хотите, чтобы два клиента общались без помощи стороннего сервера? Вы не можете изменить HTTP на P2P, по крайней мере, сейчас.
Если, с другой стороны, вы собирались передавать двух пользователей через ваш сервер (делать что-то вроде частного чата с двумя людьми), который полностью выполнимо с помощью socket.io.
Другие советы
Несмотря на то, что все сейчас бегут к Node.js, мы сделали приложение чата на основе Обезьяна И мы очень довольны этим.
APE предоставляет то, что вы ищете, из ящика », поскольку это комбинация на стороне сервера JS и клиентской структуры APE_JSF, которая предоставляет функциональность (и больше), которую вы получаете от Socket.io.
В этом проекте мы обращаемся ~ 9000 параллельных пользователей с сообщениями в реальном времениАнкет Сервер NGINX помещается перед APE, чтобы обеспечить поддержку дефтата/GZIP
Эта конфигурация (без nginx) также не будет иметь никаких проблем с вашим требованиями, даже на машине «не так высокого уровня».
Поскольку вы можете подтолкнуть данные к «каналу» или одному пользователю, вы сможете достичь именно то, что вы ищете с помощью APE, от трансляций до прямых сообщений.
Если вы используете Apache в вашем существующем стеке, то, как вы уже сказали, будут проблемы с масштабированием ваших пользователей, даже если вы используете Длинный опрос вместо непрерывного. Решение может состоять в том, чтобы использовать высокопроизводительный веб -сервер, как nginx Чтобы справиться со многими параллельными соединениями.
С другой стороны, Node.js создан для такого рода параллелизма соединения, и есть пакеты, как сокет.io, что может значительно облегчить жизнь вашего разработчика, так как он предлагает различные виды транспортных вариантов с запасными решениями и другими полезными функциями.
Я бы не рекомендовал APE для крупномасштабных приложений, это просто отлично для приложений в чате, но в отношении браузера для транспортировки данных клиента массовый транспорт начинает замедляться и раздаваться через некоторое время.