TCP Flow control в AS3? - PullRequest
       21

TCP Flow control в AS3?

3 голосов
/ 25 января 2010

В настоящее время я работаю над клиентом Flash-сокета для уже существующей службы / стандарта. Служба использует управление потоком TCP для регулирования самого себя, а флеш-сокет читает все так быстро, как только может, несмотря на то, что не может обработать его так быстро, как его принимают. Это приводит к увеличению количества bytesAvailable на сокете, и серверу никогда не знает, что клиент отстал.

Короче говоря, есть ли способ ограничить размер bytesAvailable для объекта Flash Socket или изменить его каким-либо другим способом?

Примечание. Перезапись сервера в настоящее время не является жизнеспособным вариантом, так как это стандарт, и утилита клиента значительно падает, если требуются изменения на стороне сервера

Ответы [ 2 ]

2 голосов
/ 02 февраля 2010

После исследования я обнаружил, что класс сокетов Actionscript начнет регулироваться, когда ЦП в системе максимально загружен (вероятно, из-за нехватки ресурсов / медленного времени отклика).

Это фактически решило мою проблему, так как я написал код так, что он обеспечивает баланс между тем, сколько кадров в секунду «хочет» приложение, и сколько bytesAvailable находится в сокете. Если значение bytesAvailable слишком велико, приложение будет непрерывно обрабатывать данные и загружать процессор до 100%, что в конечном итоге приведет к замедлению сокета.

0 голосов
/ 29 января 2010

Я не думаю, что это возможно. В AS3 нет низкоуровневого API, который мог бы манипулировать байтами на уровне TCP. Но вы можете реализовать газ на более высоком уровне. Например: прежде чем помещать байты в byteArray Socket, проверьте, сколько данных вы поместили туда за последние пару секунд. Если это значение слишком велико - отложить операцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...