Идея заключается в многопользовательской браузерной игре, которая взаимодействует с сервером PHP.
Прямо сейчас это работает так:
Каждую секунду браузер выполняет ajax-вызов php-скрипта, который проверяет все и возвращает ответ.
В целом все работает нормально, но проблема в том, что браузер через некоторое время перегружается (из-за тысяч запросов AJAX), и играть становится уже невозможно. Также задержка в 1+ секунды довольно велика.
Моя идея состоит в том, чтобы иметь простой флэш-пиксель, который будет иметь двустороннюю связь с сервером.
Например:
- Пользователь делает и действие
- Функция Javascript вызывает пиксель флэш-памяти с некоторыми параметрами
- Флэш отправляет запрос на сервер
- Сервер "объявляет" об этом действии всем другим слушателям флеш-памяти (пользователи онлайн)
- Ответ с сервера получен
- Обновлен пользовательский интерфейс
Нечто подобное.
Данные, которые отправляются и принимаются, могут быть просто строками (json) или любыми другими.
Я читал о различных RTMP-серверах, а также о smartfoxserver.com . Не было бы проблем с покупкой любого из них, но на мой взгляд, они предлагают слишком много для моих нужд (потоковое аудио и т. Д.). Также они не основаны на PHP. Таким образом, использование RTMP-сервера потребует запуска PHP-скрипта при необходимости. Это также не будет проблемой, пока пользователь не сможет играть без лагов.
В случае, если решением будет установка RTMP-сервера, в PHP есть « RTMP-клиент », но, к сожалению, не так много информации / документации об этом.
В любом случае, если решение не найдено, я собираюсь использовать тот же «пиксель» Flash, который будет отправлять запросы и получать ответы через PHP AMF. Он будет иметь небольшие задержки и не будет постоянным, но он должен решить часть проблемы.
Может быть, некоторые из вас уже имели эту проблему и нашли решение или любые другие идеи о том, как это реализовать.
Спасибо
P.S. Google Wave использовал нечто подобное в интерактивном чате, когда один пользователь печатал, а другой мог видеть это в режиме реального времени.