Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

Профиль «Сервер»:

  • сколько времени занимает кодирование 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 для сериализации данных по сети.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top