Я разрабатываю онлайн-игру, используя red5 и flex. используя RTMP-соединение. Я использовал только netConnection.call. моя проблема в том, что red5-вызовы не идут синхронизированной усадьбой. некоторые звонки приходят к клиенту внезапно, некоторые звонки требуют времени. Я хочу, чтобы эти призывы доходили до клиента на заказ. пожалуйста, помогите мне ...Как синхронизировать вызовы RedC NetConnection
0
A
ответ
0
Подписанное мной мнение, я уверен, что есть намного лучшие способы сделать это.
- Напишите класс, ответственный за выполнение NetConnection.call. в этом классе убедитесь, что вызов не выполняется до того, как предыдущий завершен. Он обеспечивает порядок, но замедляет выполнение.
- Напишите класс такой, что: должна быть структура данных, может быть массив в его простейшей форме. Массив содержит объекты, которые содержат порядок вызовов, функцию обратного вызова и результат, возвращаемый с сервера. Когда вы вызываете метод, добавьте эти вызовы в массив в порядке вызова. Когда вы получаете результат от сервера, проверьте массив. если предыдущие вызовы еще не возвращены, сохраните их в массиве. Если ожидающих отложенных вызовов нет, вызовите функцию обратного вызова для любых функций, называемых «позже, но законченных ранее», и удалите этот элемент из вашего массива.
Но (всегда есть, но в red5), если ваше приложение нуждается в некотором результате в порядке, возможно, вам стоит рассмотреть вашу архитектуру. В большинстве случаев тщательно продуманный механизм обработки событий устраняет необходимость или упорядоченные результаты.
0
Red5 предлагает два адаптера приложений, которые поддерживают синхронизированный и многопоточный доступ. Чтобы использовать их, просто добавьте org.red5.server.adapter.ApplicationAdapter для синхронизации или org.red5.server.adapter.MultiThreadedApplicationAdapter в вашем приложении.