Удушение сокета Flash XML - PullRequest
       6

Удушение сокета Flash XML

1 голос
/ 09 февраля 2010

Я пытаюсь решить некоторые проблемы в мультитач-приложении, которое я создал. Он использует flosc для связи с сервером сокетов xml, который отправляет события мультитач.

В большинстве случаев все работает отлично.

Но если я имею в виду и заполняю его событиями мультитач, Flash не может поспеть за анализом ввода, и сокет просто продолжает получать данные, которые накапливаются, пока он не перехватит или не произойдет сбой всего объекта.

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

* Приложение выполняет 6-10 одновременных вводов без проблем, вещи начинают становиться неопрятными, когда мне приходится иметь дело с 20+, что в основном означает, что кто-то лежит на столе;)

1 Ответ

1 голос
/ 09 февраля 2010

Где это задыхается? Сначала я бы начал с анализа.

Профиль "Сервер":

  • сколько времени занимает кодирование XML?
  • сколько времени занимает полная запись в сокет?

Профиль клиента:

  • сколько времени занимает чтение данных из сокета?
  • сколько времени занимает декодирование XML?

Лично для чего-то подобного я бы избегал XML, если бы вы могли, и / или пытался лениво-декодировать xml (делайте это, когда вы в этом нуждаетесь ... так что вы можете отбрасывать куски XML, не тратя впустую циклы процессора, если ваша программа перегружена).

Я бы попытался использовать необработанный класс Socket http://www.adobe.com/livedocs/flash/9.0/main/00000318.html#wp128960 и пользовательский формат пакета, массив, в котором каждый индекс содержит соответствующие данные. в псевдокоде:

messageArray = [message type, arg0, arg1, arg2...];

поэтому у вас может быть определено «событие перемещения мыши», например:

MessageConstants.MOUSE_MOVE = 0; // or whatever id you want

messageArray = [MessageConstants.MOUSE_MOVE, mouseDeltaX, mouseDeltaY];

Затем используйте AMF http://en.wikipedia.org/wiki/Action_Message_Format для сериализации данных по проводам.

Надеюсь, это поможет.

...