Подтвердить что ты не робот

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

Как указано в @zaf, вы, скорее всего, найдете автономное решение PHP - не то, что работает в Apache. Это означает, что существует модуль Apache WebSocket.

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

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

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

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

Ответ 3

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

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

Пожалуйста, проверьте эту ссылку .

Ответ 4

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

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

ИЛИ

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