PHP ‹---› Постоянное соединение FLASH (потоковая передача данных)

Идея заключается в многопользовательской браузерной игре, которая взаимодействует с сервером PHP.

Сейчас это работает так: каждую секунду браузер выполняет ajax-вызов php-скрипта, который проверяет все и возвращает ответ. В целом он работает нормально, но проблема в том, что браузер через некоторое время перегружается (из-за тысяч запросов ajax), и играть больше становится невозможно. Также задержка более 1 секунды - это довольно много.

Моя идея состоит в том, чтобы иметь простой флэш-пиксель, который будет иметь двустороннюю связь с сервером. Например:

  • Действия пользователя и действия
  • Функция Javascript вызывает пиксель flash с некоторыми параметрами
  • Флэш отправляет запрос на сервер
  • Сервер «объявляет» об этом действии всем остальным слушателям flash (пользователям онлайн)
  • Получен ответ от сервера
  • Пользовательский интерфейс обновлен

Что-то такое.

Отправляемые и получаемые данные могут быть просто строками (json) или любыми другими.

Я читал о различных серверах RTMP, а также о smartfoxserver.com. Купить любой из них не составит труда, но, на мой взгляд, они предлагают слишком много для моих нужд (потоковое аудио, видео и т. Д.). Также они не основаны на PHP. Таким образом, использование RTMP-сервера потребует от него запуска PHP-скрипта при необходимости. Это тоже не будет проблемой, пока пользователь не сможет играть без задержек.

В случае, если решением будет установка сервера RTMP, существует "клиент RTMP "в PHP, но, к сожалению, об этом не так много информации / документации.

В любом случае, если решение не будет найдено, я буду использовать тот же «пиксель» Flash, который будет отправлять запросы и получать ответы через PHP AMF. Он будет иметь небольшие задержки и не будет постоянным, но должен решить часть проблемы.

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

Спасибо

P.S. Google Wave использовал нечто подобное в своем интерактивном чате, когда один пользователь печатал, а другой мог видеть это в режиме реального времени.


person gsdaemon    schedule 11.03.2012    source источник


Ответы (2)


Можно использовать XMLSocket в AS3 для установите соединение через сокет с сервером PHP.

person weltraumpirat    schedule 11.03.2012

rtmfp разработан именно для того, что вы хотите. http://www.adobe.com/products/flash-media-enterprise/rtmfp-faq.html

person user983223    schedule 11.03.2012