Я переносю приложение из flex sdk 3.4 в flex sdk 4.5.
Я использую telnet-пример учебников AS3 в качестве основы для создания универсального класса сокетов, реализующего конкретный протокол.
Основная проблема заключается в том, что новое приложение с проверенным классом сокета не генерирует никаких событий (нет ошибок - нет подключений - нет данных - ничего).Функция catch с методом connect не выдает никаких ошибок.Я проверил, были ли события успешно подключены, но они не запускаются никогда.
Обновление: Я использовал предложения, чтобы изменить код.На самом деле, сейчас я получаю сообщение об ошибке в политике безопасности.
Это конструктор:
public function GenericSocket(server:String, port:int, output:TextArea) {
// set class variables to the values passed to the constructor.
serverURL = server;
portNumber = port;
ta = output;
// Create a new Socket object and assign event listeners.
socket = new Socket();
socket.addEventListener(Event.CONNECT, connectHandler);
socket.addEventListener(Event.CLOSE, closeHandler);
socket.addEventListener(ErrorEvent.ERROR, errorHandler);
socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
//Added by suggestions
socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
socket.addEventListener(ProgressEvent.SOCKET_DATA, dataHandler);
// Load policy file from remote server.
Security.loadPolicyFile("http://" + serverURL + "/crossdomain.xml");
// Attempt to connect to remote socket server.
try {
msg("Trying to connect to " + serverURL + ":" + portNumber + "\n");
socket.connect(serverURL, portNumber);
} catch (error:Error) {
/*
Unable to connect to remote server, display error
message and close connection.
*/
msg(error.message + "\n");
socket.close();
}
}
Это connectHandler, securityErrorHandler и ioErrorHandler (никогда не вызывается Обновление: Обработчик безопасности называется beign)
private function connectHandler(event:Event):void {
if (socket.connected) {
msg("connected...\n");
} else {
msg("Error: unable to connect\n");
}
}
//Added by suggestions
private function securityErrorHandler(event:SecurityErrorEvent):void {
msg("securityErrorHandler: " + event+"\n");
}
public function ioErrorHandler(event:IOErrorEvent):void {
msg("Error: Unable to connect: socket error.\n");
}
Некоторые идеи или директивы могут быть полезны.Может быть, какой-нибудь тест, чтобы попробовать общий сокет?может быть, тип приложения?
Обновление: Полученная ошибка:
securityErrorHandler: [SecurityErrorEvent type = "securityError" bubbles = false, отменить= false eventPhase = 2 text = "Ошибка # 2048"]
Я использую эти включения в проекте:
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx2="library://ns.adobe.com/flex/mx"