Использование WebSocket на сервере Apache
При всем шуме вокруг WebSockets довольно сложно найти хорошее пошаговое руководство о том, как использовать их с сервером Apache в Google.
Мы разрабатываем плагин в PHP (symfony2), который время от времени будет запускать экземпляр чата. И мы находим WebSockets более интересными, стандартными и быстрыми, чем AJAX по этому вопросу. Дело в том, что в нашей группе нет большого количества системных ресурсов, и нам сложно собрать хорошую информацию по следующим вопросам:
- Можно ли запустить экземпляр WebSocket на традиционном сервере Apache, и если да, у вас есть полезные ссылки для нас?
- Если нам нужно модифицировать сервер, какие инструменты вы бы порекомендовали бы, зная, что мы не слишком искусны в sysadmin, поэтому мы не можем позволить себе поддерживать высокий уровень обслуживания b ***.
Большое спасибо,
ps: мы свяжемся с вашим блогом/сайтом, так как мы сделаем технический/информационный пост в нашем devblog об этой части нашего приложения.
Еще раз спасибо!
Ответы
Ответ 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