Как синхронизировать вызовы Red5 NetConnection

Я занимаюсь разработкой онлайн-игры, используя red5 и flex. используя соединение RTMP. Я использовал только netConnection.call. моя проблема в том, что звонки на red5 не приходят синхронизированным поместьем. некоторые звонки приходят клиенту внезапно, некоторые звонки занимают время. Я хочу, чтобы эти звонки доходили до клиентской стороны по порядку. Пожалуйста, помогите мне кто-нибудь...

2 ответа

Red5 предлагает два адаптера приложений, которые поддерживают синхронизированный и многопоточный доступ. Чтобы использовать их, просто расширьте org.red5.server.adapter.ApplicationAdapter для синхронизации или org.red5.server.adapter.MultiThreadedApplicationAdapter в своем приложении.

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

  1. Напишите класс, который отвечает за выполнение NetConnection.call. в этом классе убедитесь, что до завершения предыдущего не было сделано ни одного вызова. Это обеспечивает порядок, но замедляет исполнение.
  2. Напишите класс такой, что: Должна быть структура данных, возможно, массив в простейшем виде. Массив содержит объекты, которые содержат порядок вызовов, функцию обратного вызова и результат, возвращаемый сервером. Когда вы вызываете метод, добавьте эти вызовы в массив в порядке вызова. Когда вы получите результат от сервера, проверьте массив. если предыдущие вызовы еще не возвращены, сохраните их в массиве. Если нет ожидающих предыдущих вызовов, вызовите вашу функцию обратного вызова для любых функций, "вызванных позже, но завершенных ранее", и удалите этот элемент из вашего массива.

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

Другие вопросы по тегам