Как синхронизировать вызовы Red5 NetConnection - PullRequest
0 голосов
/ 17 декабря 2011

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

Ответы [ 2 ]

0 голосов
/ 21 октября 2012

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

0 голосов
/ 19 декабря 2011

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

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

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

...