Добрый день! Возникла проблема с протоколом передачи данных между флешовым клиентом и сервером на Erlang'e организованном через сериализованные amf объекты. Проблема в следующем: клиент отправляет данные на сервер в канал, а канал рассылает всем подключенным к нему пользователям, аналогия - чат, чат комната.
Изначально была первая проблема вызванная наглингом при отправке, если с сервера отправлялось практически одновременно несколько пакетов. Проблема решилась с помощью настроки TCP_NODELAY сокета на сервере. Склеивание исчезло и сниффер теперь показывает, что на компьютер клиента все приходит в нужном количестве и по нужному порту. И визуально содержимое похоже на правду. Но сама именно флешка прочитывает из сокета только один объект, игнорируя полностью второй, хотя при менее активной передаче данных с выключенным TCP_NODELAY такого не наблюдалось.
Код реализации сокетов на флешке:

Код AS3:
public static var socket:Socket;
public static function init(ip:String, port:int):void {
socket = new Socket();
configureListeners(socket);
socket.connect(ip, port);
}
private static function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.CLOSE, closeHandler);
dispatcher.addEventListener(Event.CONNECT, cnntHandler);
dispatcher.addEventListener(ProgressEvent.SOCKET_DATA, onData);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
}
private static function onData(event:ProgressEvent) : void {
var data:Object = socket.readObject();
}
Я не думаю конечно, что с TCP_NODELAY может что-то перестать доотправляться, причем это поведение периодическое, то все хорошо, то потери во флешке. Если кто-нибудь сталкивался с этим, напишите плиз как с этим бороться.
Добавлено через 35 минут
Нашел решение проблемы, будет полезно:

Код AS1/AS2:
while(true) {
try {
var data:Object = socket.readObject();
} catch (e:Error) {
break;
}
.. обработка объекта
}