События Socket поставлены в очередь во Flash?

Я пытаюсь реализовать двоичный протокол между флэш-приложением и пользовательским Java-сервером с использованием сокетов TCP/IP, сообщения протокола имеют переменную длину, поэтому моя идея состоит в том, чтобы добавить поле, указывающее количество байтов, которые я должен прочитать перед разбор полного сообщения, примерно так:

bytesToRead = socket.readInteger();
var bf:ByteArray;
socket.readBytes(bytesToRead);
parseMessage(bf);

Итак, мой вопрос: если при обработке сообщения (предположим, что оно завершено) другие данные поступают через сокет, сообщения типа ProgressEvent.SOCKET_DATA поставлены в очередь, поэтому количество вызовов моего обработчика равно (по крайней мере, в этом случае) количество полученных сообщений или мне следует читать, пока не будут доступны все данные сокета? или проще: вообще сообщения для обработчика ставятся в очередь во флеш-памяти?


person james_bond    schedule 01.12.2009    source источник


Ответы (1)


Событие ProgreeEvent.SOCKET_DATA отправляется каждый раз, когда сокет получает данные. В основном каждый раз, когда ваш Java-сервер вызывает socket.write(); или socket.writeln(), вы должны получить все сообщение в ProgreeEvent.SOCKET_DATA, если вы, конечно, не отправляете частичные сообщения.

Надеюсь, что это ответ на ваш вопрос.

person Chris Gutierrez    schedule 02.12.2009