Лучший способ для клиента Flash общаться с сервером Java через полнодуплексное соединение (чат или игра) - PullRequest
1 голос
/ 16 сентября 2010

Мой клиент находится во Flash / Flex (игра с чатом) и будет общаться с сервером Java. Каков наилучший способ (протокол / интерфейс) для моего Flash-клиента общаться с моим сервером? Я слышал о Flash Remoting MX , но это механизм запроса / ответа. Я всегда мог запросить что-то и ждать асинхронных уведомлений от сервера. Затем запросите снова, внедрив что-то вроде Comet server.

В любом случае, что является отраслевым стандартом для этого типа связи: Flash Client общается с сервером Java, поддерживая асинхронные «push» уведомления от сервера.

Спасибо!

Ответы [ 4 ]

2 голосов
/ 17 сентября 2010

Вы можете использовать потоковое AMF-соединение для получения двухстороннего асинхронного push-сигнала в реальном времени. Если вы хотите что-то бесплатное, BlazeDS может сделать это за вас (он использует реализацию Comet). Мне очень повезло с этим, и я масштабировал один канал до пары тысяч сообщений в секунду - достаточно для простой игры или приложения для чата.

Недостатком является то, что BlazeDS использует блокировку ввода-вывода, поэтому вы ограничены в количестве одновременных соединений, которые вы можете поддерживать (поскольку каждому из них требуется свой собственный поток). Отсечка зависит от сервера приложений, который вы используете, но, по моему опыту, вы никогда не получите более нескольких сотен без нехватки ресурсов.

Так что, если вам требуется всего пара сотен одновременно работающих пользователей, вы, вероятно, в порядке с BlazeDS и StreamingAMF. Если вам нужно что-то большее, вы должны последовать совету Майкла и заплатить за что-нибудь дорогое с неблокирующим вводом-выводом.

1 голос
/ 16 сентября 2010

Посмотрите на ElectroServer примеры.

1 голос
/ 16 сентября 2010

Рассмотрите возможность использования решения на основе RTMP (NetConnection in Flash). Удаленные общие объекты или прямая потоковая публикация могут делать то, что вы хотите.

Для всего этого потребуется реализация Flash Media Server, либо Red5, Adobe, Wowza, либо некоторые другие.

0 голосов
/ 17 сентября 2010

У вас есть несколько вариантов сделать это при использовании таких продуктов, как BlazeDS, LCDS, Granite, Red5 и т. Д. Обратите внимание, что я знаю только о LCDS, чтобы включить все параметры a) b) c) d), перечисленные ниже (еслиЯ не прав, может быть, кто-то может добавить комментарий).

a) RMTP через полнодуплексные сокеты b) Потоковая передача c) Длинный опрос d) Короткий опрос

для b) c) d)Вы можете выбрать между блокирующим IO и неблокирующим IO.а) использует неблокирующий ввод / вывод.

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

Более подробную информацию можно найти в Damon blog .На первый взгляд вы можете найти слишком много информации по этой ссылке, но это не так.На самом деле вам нужно прочитать еще много статей (или книг, таких как Руководство разработчика Livecycle ).Это непростая тема, и вам нужно детально разобраться во всех аспектах, если вам необходимо создать профессиональное решение.

Существует еще один вариант - создать собственный протокол с использованием флеш-сокетов с переходом на другой тип.канала, но тип разработки будет существенным.

Вы также можете взглянуть на серверы, такие как ElectroServer или SmartFox, на то, что, как я знаю, они специально созданы для игровой индустрии.

...