Ситуация следующая. Есть список нескольких профилей, содержащих параметры коннектов к разного рода устройствам.
Есть класс, создающий и обслуживающий эти самые соединения (сокетные).
Код AS3:
//В конструкторе создан сокет и слушатели
sender = new Socket();
initListeners()
...
private function initListeners():void {
sender.addEventListener(Event.CONNECT, onSenderConnect);
sender.addEventListener(ProgressEvent.SOCKET_DATA, onSendData);
sender.addEventListener(Event.CLOSE, onSenderClosing);
sender.addEventListener(IOErrorEvent.IO_ERROR, onIOErr);
sender.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurErr);/**/
}
//Получаем профиль и соединяемся...
public function set profile(value:Object):void {
for (var i:String in value) this[i] = value[i];
sender.connected?sender.close():null;
sender.connect(host, int(port));
}
При получении следующего профиля, сокет пересоединяется, обрабатываются данные и, по завершении, запрашивается очередной профиль. Иногда сокет не может соединиться (качество связи) и выбрасывает, соответственно Error #2031: Socket Error. Это безобразие диспатчится контроллеру и он командует загрузку следующего профиля. И теперь все следующие, после "ошибочного", соединения выдают эту же ошибку, хотя они исправны на деле. Пробовал полностью обновлять сокет, на каждом профиле, проблема осталась. Если же соединения исправны, то и единственный сокет нормально разруливает все данные.
Возможно ли как-то победить это?