Использование WebSocket на сервере Apache

Со всем шумом вокруг WebSockets довольно сложно найти хорошее пошаговое руководство о том, как использовать их с сервером Apache в Google.

Мы разрабатываем плагин в PHP (symfony2), который время от времени будет запускать экземпляр чата. И мы находим WebSockets более интересными, стандартными и быстрыми, чем AJAX по этому вопросу. Дело в том, что у нас нет большого количества системных ресурсов в нашей группе, и нам трудно собрать хорошую информацию по следующим вопросам:

  • Можем ли мы запустить экземпляр WebSocket на традиционном сервере Apache, выделенный сервер, и если да, у вас есть полезные ссылки для нас?
  • Если нам нужно модифицировать сервер, какие инструменты вы бы порекомендовали, зная, что мы не слишком искусны в sysadmin, поэтому мы не можем позволить себе поддерживать обслуживание b ***.

Большое спасибо,

ps: мы свяжемся с вашим блогом / сайтом, так как мы сделаем технический / информационный пост на нашем devblog об этой части нашего приложения.

Еще раз спасибо!

Одним из путей является использование независимого установленного сервера веб-сокетов.

Для PHP вы можете попробовать: http://code.google.com/p/phpwebsocket/ или http://github.com/Devristo/phpws/

Есть и другие проекты, которые вы можете попробовать.

В принципе, вам нужно загружать, распаковывать и запускать процесс.

На интерфейсе у вас будет соединение javascript с сервером на конкретном порту.

На большинстве серверов websocket есть демоверсия, которая отгоняет все, что она слышит, поэтому это хорошее место для написания тестового кода. Вы даже можете найти рудиментарное выполнение чата.

Трудная часть – следить за сервером веб-сокетов и следить за тем, чтобы он работал плавно и непрерывно.

Попробуйте протестировать как можно больше браузеров / устройств, так как это решит, какую версию сервера веб-узлов вы выберете. Есть старые и новые протоколы, за которыми вы должны следить.

Поскольку @zaf заявляет, что вы с большей вероятностью найдете автономное решение PHP – не то, что работает в Apache. Тем не менее, есть модуль Apache WebSocket .

Однако основная проблема заключается в том, что Apache не был построен с учетом множества постоянных подключений. Он, наряду с PHP, основан на идее, что запросы сделаны, и ответы быстро отправляются обратно. Это означает, что ресурсы могут быть быстро израсходованы, если вы открываете запросы, и вам нужно будет быстро взглянуть на горизонтальное масштабирование.

Лично я думаю, у вас есть два варианта:

  1. Используйте альтернативное решение для веб-технологий в реальном времени и общайтесь между вашим веб-приложением и веб-инфраструктурой реального времени, используя очереди или краткосрочные запросы (веб-службы).
  2. Выгрузить нагрузку обработки постоянных подключений и масштабирования веб-инфраструктуры в реальном времени на веб-хостинг в режиме реального времени. Я работаю в Pusher, и мы попадаем в эту категорию.

Как для самостоятельного размещения, так и для хостинга вы можете проверить мое руководство по веб-технологиям в режиме реального времени .

Я представил еще один сервер websocket: PHP Ratchet ( Github ).

Это лучший и полный список боковых кодов клиента и сервера и поддержки браузера.

Проверьте эту ссылку .

Другой путь – использовать выделенный сервер websocket.

Попробуйте Achex Websocket Server по адресу http://www.achex.ca и ознакомьтесь с учебниками.

ИЛИ

Если вы действительно хотите Apache, проверьте Apache Camel . (но вы должны настроить его и немного сложнее, чем сервер achex) http://camel.apache.org/websocket.html