Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > Котяра

Оценить эту запись

Тестирование NetConnection в pure AS3 и BlazeDS

Запись от Котяра размещена 25.03.2009 в 10:09
Обновил(-а) Котяра 25.02.2010 в 09:56

Вовсю тестирую сейчас BlazeDS, проблема в том что все примеры написаны для Flex, поэтому пришлось повозится для реализации примеров на pure AS3.
В тестовом примере создую удаленный объект и вызываю у него функцию hello, в качестве результата возвращающий сериализованный класс User
Код AS3:
package 
{
	import fl.controls.Button;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
        import flash.events.NetStatusEvent;
        import flash.events.SecurityErrorEvent;
        import flash.net.NetConnection;
	import flash.net.ObjectEncoding;
	import flash.net.Responder;
	import flash.text.TextField;
	import flash.text.TextFieldType;
	import flash.net.registerClassAlias;
 
	/**
	 * Тестирование NetConnection в pure AS3 и BlazeDS
	 * @author k0t0vich (c) 2009 b_konstantin@list.ru http://islandsworld.ru/
	 */
	public class Main extends Sprite 
	{
 
	public var traceTF:TextField; 	
	public var urlTF:TextField; 	
	public var callTF:TextField; 	
	public var btnCall:Button;
	public var btnConnect:Button;
 
	private var connection:NetConnection = new NetConnection();
	private var responder:Responder = null;
	// destination.remoteFunction
	private var srvCommand:String = "hello.hello";
	private var url:String = "http://192.168.10.38:8080/samples/messagebroker/amf";
 
		public function Main():void 
		{
			// Регистрируем сериализованный  пользовательский класс
			// замена [Remote Class ] во Flex
			registerClassAlias("flex.examples.hello.User",User);
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
 
			traceTF = new TextField();
			traceTF.width = 795;
			traceTF.height = 400;
			traceTF.border = true;
			addChild(traceTF);
 
			myTrace("Enter");
 
 
			urlTF = new TextField();
			urlTF.type = TextFieldType.INPUT;
			urlTF.width = 795;
			urlTF.y = 405;
			urlTF.height = 30;
			urlTF.border = true;
			urlTF.text = url;
			addChild(urlTF);
 
 
			btnConnect= new Button();
			btnConnect.label = "connect";
			btnConnect.y = 440;
			addChild(btnConnect);
	btnConnect.addEventListener(MouseEvent.CLICK, connect);
 
 
			callTF = new TextField();
			callTF.type = TextFieldType.INPUT;
			callTF.width = 795;
			callTF.y = 465;
			callTF.height = 30;
			callTF.border = true;
			callTF.text = srvCommand;
			addChild(callTF);
 
 
			btnCall = new Button();
			btnCall.label = "call";
			btnCall.y = 500;
			addChild(btnCall);
			btnCall.addEventListener(MouseEvent.CLICK, callRemoteProcedure);
 
 
			responder = new Responder(onRespond);		
 
		}
 
		private function connect(e:Event):void 
		{
			connection.objectEncoding = ObjectEncoding.AMF3;
			connection.addEventListener(Event.ACTIVATE, onConnect);
			connection.addEventListener(Event.DEACTIVATE, onDisconnect);
            connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
			connection.connect(urlTF.text);	
		}
 
		private function onDisconnect(e:Event):void 
		{
			myTrace("onDisconnect: " + e);
		}
 
		private function onConnect(e:Event):void 
		{
			myTrace("onConnect: " + e);
		}
 
		private function onRespond(ro:User):void
		{
 
			myTrace("onRespond " + ro);								
		}
 
		private function callRemoteProcedure(event:MouseEvent):void
		{
			connection.call(callTF.text,responder,"Piter");
		}
 
		public function myTrace(str:String):void
		{
			traceTF.appendText(str+"\n");
		}
 
		private function netStatusHandler(event:NetStatusEvent):void {
            myTrace("netStatusHandler: "+ event);
         }
 
 
        private function securityErrorHandler(event:SecurityErrorEvent):void {
            myTrace("securityErrorHandler: " + event);
        }
 
	}
 
 
}
класс User

Код AS3:
package  
{
 
	/**
	 * Пользовательский  тестовый класс
	 * @author k0t0vich (c) 2009 b_konstantin@list.ru http://islandsworld.ru/
	 */
	public class User 
	{
 
		public var id:int;
		public var name:String;
 
		public function User() 
		{
 
		}
 
		public function toString():String
		{
			var ret:String = "[id=" + String(id) + ", " + "name=" + name+"]";
			return ret;
 
		}
	}
 
}
В следующем примере буду испотзовать flex классы из пакета rpc в pureAS3 варианте.
Размещено в ru.k0t0vich
Комментарии 0 Отправить другу ссылку на эту запись
Всего комментариев 0

Комментарии

 

 


Часовой пояс GMT +4, время: 14:52.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.